复习:面向对象的三大特征:继承、封装、多太。
继承:
1、每个子类只能有一个直接父类,子类继承父类的语法格式:[修饰符] class 子类名 extends 父类名
2、java的子类不能直接调用父类的构造方法。
3、构造方法的方法名必须与类名一致。
4、Java类虽然只能有一个直接父类,但是它可以有多个间接父类 class 子类 extends 父类1,父类2,父类3 .....
5、子类可以重写父类(重写它的方法) ,重写也称覆盖
6、但是方法的重写必须遵循“三同一大一小”原则。
其中“三同”是指方法名、形参列表、返回值相同。
7、子类可以用关键字super来调用父类被覆盖的方法。
8、如果父类的方法具有private的权限,即使子类符合“三同一大一小”原则,子类也不能重写父类的该方法,这只能说明子类是自己定义的一个新方法。
9、子类转换父类的语法格式:(子类名)父类名
10、子类可以看做是父类的一个对象,而父类却不能被看做是父类的一个对象。
11、类与类继承是单向的。
final修饰符:
1、final关键字可以修饰类、变量和方法,但是被final关键字修饰的类、变量和方法无法发生改变。
2、Final修饰成员变量的用法:
// 定义成员变量时指定默认值,合法
final int a = 6;
final String str;
final int c;
// 既没有指定默认值,也没有在初始化块、构造方法中指定初始值,因此ch不合法final static double d;
3、final修饰的方法不能被重写,因为java不希望任何类重写这个方法,所以使用final这个方法密封起来(但对于该类提供的toString和equal是方法,都允许子类重写,因此没有使用final来修饰。
4、final修饰的类没有子类,也不会有子类。
抽象类:
1、抽象类必须用关键字abstract来修饰,抽象类不能被实例化,只能被子类继承。
2、抽象类没有方法体
3、抽象类可以包含属性、方法、构造方法、初始化块、内部类等
4、抽象类可以有抽象方法和普通方法(补充:接口只能有抽象方法
接口:
1、接口完全支持多继承。
2、用关键字interface修饰,接口中只能有抽象方法,不能有普通方法。
3、接口的定义的基本语法格式:
[修饰符] interface 接口名 extends 父接口1,接口2,接口3 .....{
零个或多个常量定义...
零个或多个抽象方法定义...
}
4、一个类可以实现一个或多个接口(使用implements关键字),类实现接口的语法格式:
[修饰符] class 类名 extends 父类 implements 接 口1,接口2,接口3.....{
类体部分
}
5、接口不能用于创建实例,但可以用于声明引用类型的变量,接口的主要用途就是被实现类实现。