Java基础(三)——封装、重载、继承等
一、封装
1. 访问修饰符
public:该类或非该类均可访问。
private:只有该类可以访问。
Protected:该类及其子类的成员可以访问;同一个包中的类也可访问。
默认:同一包中的类可以访问。
2. UML类图
3. 类的构造方法
作用:负责对象初始化工作;类的构造方法确定在用户操作对象之前,保证初始化。
语法规则:构造方法名与类名相同;
无返回类型;
方法实现主要为字段赋初值;
构造方法的调用:new(返回新建实例的引用),系统默认的构造方法为无参构造方法
构造方法的重载:通过调用不同的构造方法来表达对象的不同初始化方式。
4. this关键字
特点:
a) 在类的方法中使用的this关键字代表的是调用此方法的对象的引用;
b) this可以看做是一个变量,它的值是当前对象的引用;
c) 使用this关键字可以处理方法中的成员变量和形参同名的问题;
d) 当在方法内需要用到调用该方法的对象时,可以用this;
e) 在类的构造方法中可以调用this([参数列表])来调用该类的指定构造方法;
f) 两个构造方法同名,参数不同,称为构造方法的重载;
g) 构造方法可以调用构造方法,但是必须放在第一条语句。
5. static关键字
特点:
a) 修饰成员变量,方法成为静态变量,静态方法。被static修饰的变量或方法,是所有对象共享的,不再单属于哪一个对象,所有该类对象均可以使用该变量或方法,因此使用时可以用 类名.变量名,而不用对象.变量名(对象名.变量名也可以用,不推荐);
b) static修饰语句块时,称为静态代码块,先于构造方法之前执行,只会执行一次,用来对静态成员做初始化;
c) 静态修饰的成员被所有对象共享;
d) 静态方法只能访问外部的静态成员;
e) static修饰的变量被对象共享,导致一个对象对其值的改变导致的改变值在其他对象上也适用。即对象1将静态变量值由a改成b,当对象2调用该变量值时,值为改变后的b;
f) 静态方法不能访问非静态变量,静态方法中不能使用this;静态方法优先于对象产生;
g) static语句块:在类被加载的时候就会执行,只会执行一次,用来对静态的变量赋值;且优先于构造方法的执行
static{
System.out.println("static语句块");
num1 = 100;
}
6. 设计模式
a) 单例模式
要点: 某个类只有一个实例;
该类必须自行创建这个实例(对象);
必须自行向整个系统提供这个实例,即对外提供使用该实例的接口。
7. 方法重载
同一类中,同名不同参的方法成为重载方法;
仅有返回类型不同的方法不能成为重载,即方法重载必须方法签名不同(方法签名=方法名+参数列表);
8. 标准Java包就是层次型包结构;
包可以有效的防止命名冲突和混乱;
包中的成员可以相互访问;
包声明必须在源程序的首行;
包名由小写单词组成;
一个类可以使用同一包中所有类以及其他包中的所有公开类;
访问其他包中的公开类的方式:1)简单在每个类前面加上完整包名;
2)使用import语句来导包;
9. 继承
继承中父类更通用更抽象,子类更特殊更具体;
继承即基于已存在的类来构建新类,就重用了父类的方法和属性,子类中还可以添加新的方法和属性;
类之间的关系:继承体现,组合体现,接口体现;
继承特点:子类继承了父类的成员;具有层次结构;实现代码重用;
继承关键字:extends;
super关键字:
a) this保存的是当前对象地址的引用,即子类,super保存的是父类对象地址的引用;
b) 当子父类的成员出现同名时,可以用super来进行区分;
c) 当构造一个子类对象的时候一定会先调用父类的构造方法(没有父哪有子)来构造父类对象,调用父类构造方法的语句必须是子类构造方法中的第一条指令;