继承、抽象类
一、继承:
1、定义形式:访问修饰符+子类名称+extends+父类名称{
};
如:public class Daughter extends Mother {
}(一个Daughter的子类继承Mother的父类);
2、super:父类的引用。注意:父子类里子类的构造方法第一行代码默认就是super();
如:public Daughter(){
super();
}
子类调用父类的方法直接在方法体第一行用super调用即可;
3、重写:父子类里面,子类重写父类的方法(不包含构造方法);
引用重写是因为父子类里面父类的一些方法不适合子类,所以需要在子类里重写;
注意事项:
a、重写覆盖时,子类方法的修饰符权限一定要大于或等于父类方法的修饰符权限;
b、静态(static)修饰的只能覆盖静态的;
c、覆盖的应用:当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以复写父类中的方法,这样既沿袭父类的功能,又定义了子类特有的内容;
d、子类里调用父类的方法——super.方法():
public void play(){
super.play();//调用父类的方法
System.out.println("每天打半小时篮球");
}
注意:super和this的作用域在类里面,不能写到main方法里面;static修饰的方法不能用super和this关键字!
4、重载:方法名称一样,参数不同,对返回类型和访问修饰符没有要求;
如:public Mother(){
}
private Mother(String name){
};
5、final关键字:
a、修饰变量表示数据不可被更改,必须有初始值;
b、final修饰的类,不可以被继承(包括String类);
c、final修饰的方法,方法不可被重写;
二、抽象类:
1、格式:访问修饰符+abstract+class+类名称{ }
如:public abstract class Mother {
}
2、抽象方法:
格式为在方法返回类型前加“abstract”并去掉方法体“{ }”;
三、抽象类和接口的一些区别;
1、抽象类只能单一继承,而接口有多个实现;
2、抽象类里面可以有私有普通方法,而接口都是public abstract;
3、抽象类的成员变量可以是私有(private)的,但是接口都是public staitc final;
4、抽象类里面可以有构造方法,但是接口是没有构造方法的;
5、在jdk1.7版本下,接口中不能包含静态的方法和静态块,但是抽象类可以包含静态方法和静态块;
6、接口是抽象类的变体,接口中所有的方法都是抽象的,而抽象类是声明方法的存在而不去实现它的类;
四、多态:父类的引用指向子类的对象;
多态最大的特点和优势就是解除了类与类之间的耦合性;