继承(extends):
子类(派生类)继承父类(基类)的属性和方法
一个类只能有一个父类,但是一个父类可以拥有多个子类
判断: 在java里面继承都是单一继承
私有的属性和方法不能继承
权限
public 所有对象都能访问
protected 同包可以访问。继承关系可以访问
缺省 同包可以访问。
private 只有这个类里面可以直接访问的属性,其他类访问不到
super()
调用父类的属性和方法,或者,直接调用父类的构造函数
super(),出现了那么必须放在第一位
无论你写不写super(),他都会执行,都会去调用父类的构造函数
方法重写:在父类和子类里面:
当子类里面有一个方法和父类的方法一模一样(方法名+参数+返回值权限一样或者提高)的时候,我们就称为子类重写了父类的方法
抽象方法:当一个对象里面的方法,不需要或者无法写实现的时候,我们就可以将这个方法定义为抽象方法 abstract
抽象类:当一个类里面有一个抽象方法的时候,那么这个类就必须定义为抽象类
抽象类无法直接实例化
接口:当一个抽象类里面的所有方法都是抽象方法的时候,我们可以将这个抽象类定义成 接口
对于接口,只能接口继承接口,类要实现接口(implements)
接口里面的变量默认为静态变量 默认final
接口可以多继承
什么是多态: 同一种形状 ,不同的体现
特点:可扩展性极强。
静态多态:编译时多态 ->方法重载
动态多态:运行时多态 ->方法重写
关于多态:
1.使用父类类型的引用指向子类的对象
2.改引用只能调用父类中定义的方法和变量。
3.如果子类中重写了父类种的一个方法,那么在调用的时候,将会调用子类中的这个方法。(动态链接,动态调用)
4.变量不能被重写,重写的概念只针对于方法。
例题:
编译运行如下Java代码,输出结果是( )。
class Base {
public void method(){
System.out.print ("Base method");
}
}
class Child extends Base{
public void methodB(){
System.out.print ("Child methodB");
}
}
class Sample {
public static void main(String[] args) {
Base base= new Child();
base.methodB();
}
}
A.Base method
B.Child methodB
C.Base method Child MethodB
D.编译错误
选D,因为他调用了子类中父类没有的方法。