子类对象创建之前,会先产生父类对象。然后再父类对象基础之上,扩展子类特有的属性和方法。所以子类对象中包含完整的父类对象,就可以重用父类中第一的方法和属性。
子类对象创建之前,需要通过super()调用父类的构造方法,产生父类对象。如果子类构造方法中没有写super(),这是,虚拟机会自动调用super()如果父类中没有无参构造方法,子类必须通过super(参数)显示调用。
final关键字,可以修饰类、方法、变量。修饰类表示该类不能被子类继承,修饰方法表示该方法不能被子类重写,修饰变量表示该变量的内容不能改变。
访问修饰符:
public:该类或非该类均可访问。
protected:该类及其子类的成员可以访问,同一个包中的类也可以访问。
private:只有该类可以访问。
默认:相同数据包中的类可以访问。
Private成员 缺省成员 Protected成员 public成员
同一类中 是 是 是 是
统一包中的其他类 否 是 是 是
不同包中的子类 否 否 是 是
该类及非该类均可访问 否 否 否 是
封装:按照信息隐藏的原则,将数据组织在一起。
封装有两个特点:1、信息隐藏 2、信息集合
私有水属性+get/set方法和公有属性区别:
1、私有属性不能被直接访问,只能通过公有的get方法(访问器)和set方法(修改器)来进行设值和取值。这样一旦删掉get或set方法可以讲该属性做成只读或只写属性。公有属性做不到。
2、可以通过修改器在设置属性时,做数据合法性的验证。但公有属性做不到。
static{
}
称为静态初始化块,在类加载时执行,也就是在产生对象之前执行,而且只执行一次。
内部类:在一个类中,再定义一个类,这称为内部类。内部类相当于外部类的属性,内部类对象的产生依赖于外部类对象。
内部类所产生的class文件:外部类类名$内部类类名.class
多态:相同的行为,不同的实现方式;允许一个父类变量引用子类的对象,允许一个接口类型变量引用实现类对象。反过来却不行。
多态调用时,使用父类变量指向子类对象,只能调用父类中定义的方法或属性,不能调用子类特有的属性或方法。如果子类重写了父类的方法,那么调用时,会有限调用子类重写的方法。
子类重写父类的方法,要求子类方法访问修饰符要大于或等于父类方法修饰符。不能小于
子类对象创建之前,需要通过super()调用父类的构造方法,产生父类对象。如果子类构造方法中没有写super(),这是,虚拟机会自动调用super()如果父类中没有无参构造方法,子类必须通过super(参数)显示调用。
final关键字,可以修饰类、方法、变量。修饰类表示该类不能被子类继承,修饰方法表示该方法不能被子类重写,修饰变量表示该变量的内容不能改变。
访问修饰符:
public:该类或非该类均可访问。
protected:该类及其子类的成员可以访问,同一个包中的类也可以访问。
private:只有该类可以访问。
默认:相同数据包中的类可以访问。
Private成员 缺省成员 Protected成员 public成员
同一类中 是 是 是 是
统一包中的其他类 否 是 是 是
不同包中的子类 否 否 是 是
该类及非该类均可访问 否 否 否 是
封装:按照信息隐藏的原则,将数据组织在一起。
封装有两个特点:1、信息隐藏 2、信息集合
私有水属性+get/set方法和公有属性区别:
1、私有属性不能被直接访问,只能通过公有的get方法(访问器)和set方法(修改器)来进行设值和取值。这样一旦删掉get或set方法可以讲该属性做成只读或只写属性。公有属性做不到。
2、可以通过修改器在设置属性时,做数据合法性的验证。但公有属性做不到。
static{
}
称为静态初始化块,在类加载时执行,也就是在产生对象之前执行,而且只执行一次。
内部类:在一个类中,再定义一个类,这称为内部类。内部类相当于外部类的属性,内部类对象的产生依赖于外部类对象。
内部类所产生的class文件:外部类类名$内部类类名.class
多态:相同的行为,不同的实现方式;允许一个父类变量引用子类的对象,允许一个接口类型变量引用实现类对象。反过来却不行。
多态调用时,使用父类变量指向子类对象,只能调用父类中定义的方法或属性,不能调用子类特有的属性或方法。如果子类重写了父类的方法,那么调用时,会有限调用子类重写的方法。
子类重写父类的方法,要求子类方法访问修饰符要大于或等于父类方法修饰符。不能小于