继承(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,因为他调用了子类中父类没有的方法。