子类的加载过程
父类–>子类–>初始化
封装
优点:把不想暴露的东西隐藏起来,或可通过提供相关方法进行访问
权限修饰符
private、default(缺省)、protected、public
权限访问符
不要把封装理解为private,不要误认为不能访问成员才是封装。实际上对成员访问权限的任何控制(包括public)都称为封装机制。
封装的常用设置:
-
构造器和类的权限通常为public;
-
private权限最小,限制类外访问,一般把属性设为private,让其他类不能直接访问属性,达到保护属性的目的;
-
不使用权限修饰符时(即default)的成员在类内以及在同一个包中的其他类可以访问;
-
protected所修饰的成员在类内、同一个包中、所在类的子类中都可以访问。
单例模式
规则:
①提供一个私有的无参构造器
②提供一个静态的得到实例对象的方法
③提供一个静态的类的声明
优点:降低内存消耗
懒汉式
public class Person {
public static Person person;
private Person() {
}
public static Person getInstance() {
if(person == null) {
person = new Person();
}
return person;
}
}
饿汉式
public class Person_hungry {
private static Person_hungry person = new Person_hungry();
private Person_hungry() {
}
public static Person_hungry getInstance() {
return person;
}
}
方法的重写 (子类继承父类)
-
相同的方法名
-
相同的返回值类型
-
相同的参数类型以及参数列表,参数顺序
-
不小于父类的访问权限
抽象
-
抽象类不能实例化
-
当一个类继承抽象类时,必须实现其所有的方法,否则声明为抽象类
-
抽象类不能使用Final修饰
-
抽象类的成员:静态方法,静态成员,非静态资源,普通类中的成员抽象类都有
-
抽象方法不能为static
-
抽象类中可以全部为抽象方法
-
抽象类中可以全部都不为抽象方法
final
修饰常量,赋值以后不能改变
修饰类,则类不可以被继承
引用数组类型转换
向上转型
Animal animal = new Person();
子类转为父类
- 仅可以使用父类中的方法
向下转型
必须先向上转型才能向下转型
Person person = (Person) animal;
父类转为子类