1. 构造方法
构造方法是创建对象时调用的方法。
在创建对象的时候,对象成员可以由构造函数方法进行初始化。
1. 构造方法语法:
访问修饰符 构造方法名 ( ) {
//初始化代码
}
特点:与类同名,没有返回值。
2. 系统提供默认无参构造方法:
public Penguin() {
}
2. 构造方法重载
1. 方法重载
(1) 方法名相同。
(2) 参数数据类型或参数个数不同。
(3) 与返回值、访问修饰符无关。
2. 自定义构造方法
如果自定义构造方法,系统不再提供默认无参构造方法。
public Penguin (String name,int health,int love,String sex ) {
this.name = name;
this.health = health;
this.love = love;
this.sex = sex;
}
3. 构造方法重载的调用
pgn = new Penguin();
pgn.print();
pgn = new Penguin("美美", 80, 20, "Q仔");
pgn.print();
3. static关键字
static的主要目的就是创建独立于具体对象的域变量与方法,或者静态代码块。
static修饰的属性和方法可以通过类名直接访问,静态代码块当java虚拟机加载类时,就会执行该代码块。
1. 使用static定义变量
static final String SEX_MALE="Q仔";
static final String SEX_FEMALE="Q妹";
2. 使用static定义方法
static void print() { }
4. static变量与实例变量
类的成员变量包括:
类变量(静态变脸):
被static修饰的变量
在内存中只有一个拷贝
类内部,可在任何方法内直接访问静态变量
在其他类中,可以直接通过类名访问
实例变量:
没有被static修饰的变量
每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响
5. static方法
静态方法:可以直接通过类名访问。
静态方法中不能使用this和super。
不能直接访问所属的实例变量和实例方法。
可直接访问类的静态变量和静态方法。
实例方法:通过实例访问
可直接访问所属类的静态变量、静态方法、实例变量和实例方法。
静态方法必须被实现
6. static静态代码块
JVM加载类时,加载静态代码块。
如果有多个静态块,按照顺序加载。
每个静态代码块只会被执行一次。
7. 封装
面向对象三大特征之一:封装
1. 封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
2. 封装的好处
(1) 隐藏类的实现细节
(2) 只能通过规定方法访问数据
(3) 方便加入控制语句
(4) 方便修改实现
3. 封装的步骤
(1) 修改属性的可见性,设置为private。
(2) 创建公有的getter/setter方法,用于属性的读写。
(3) 在getter/setter方法中加入属性控制语句,对属性值的合法性进行判断。
8. this关键字
this关键字的用法
(1) 调用属性
this.health = 100;
this.name = "大黄";
(2) 调用方法
this.print();
(3) 调用构造方法
this();
this("小黑",100,100,"雄");
9. 包
1. 允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件。
2. 防止命名冲突。
3. 更好的保护类、属性和方法。
如何创建包:
package cn.jbit.classandobject;
10. 包命名规范
1. 包名由小写字母组成,不能以圆点开头或结尾。
package mypackage;
2. 包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。
如:
package cn.bdqn.mypackage;
3. 包名后续部分依不同机构内部的规范不同而不同。
package cn.bdqn.javagroup.powerproject;
11. 使用包的注意事项
1. 一个类同时引用了两个来自不同包的同名类,必须通过完整的类名来区分。
2. 每个包都是独立的,顶层包不会包含子包的类。
3. package和import的顺序是固定的。
package必须位于第一行(忽略注释行)
只允许有一个package语句
其次是import
接着是类的声明