重载的条件:
1.必须在同一个类中2.方法名必须相同3.参数列表不能相同。 重写的条件: 1. 在不同的类中
2. 发生方法重写的两个方法返回值,方法名,参数列表必须完全一致 3. 子类抛出的异常不能超过父类相应的方法抛出的异常
4. 子类方法的访问级别不能低于父类相应方法的访问级别(public,package,protected, private) 5.方法体不同
super()调用父类构造,super.只能调用父类的实例方法 this()调用该类的其他构造方法,this.调用类的属性,方法 如果父类有有参构造,子类必须定义构造方法
2011-04-12 09:28 java类的继承,重载,重写
继承关键字extends 如public class Person extends Animal ============================================================ super只能用在子类的定义中,而不能在main()函数中调用;
super()作构造器时,若父类以及祖宗类是有参构造函数,则子类以及孙类必须super(参数),而且不能间断,且在子孙类的构造函数的第一行必须是super(参数); 以此继承关系为例:
Animal ----> Person---> Student
实际上在类Student的构造函数中,隐含存在了类Person的构造函数和类Animal的构造函数,而所有的构造函数也够隐含存在了类Object的构造函数
super在子类中可以调用父类的protected 和public的方法和属性,当然如果父子类在同一包(目录)中,super在子类的定义中还能调用父类default的属性
============================================================
方法覆盖的条件:子类中的方法与父类中的方法{方法名,参数,返回值类型均相同,而子类的访问权限要大于父类的访问权限}
方法重载的条件:类中的方法(无论是新建的还是继承来的){方法名相同,但参数不同,就是重载}
其他条件的重名问题一概报错
详见Banana.java Plant.java Tree.java中的showInfo()方法 ============================================================ 属性也有覆盖,而且是绝对的覆盖,只要属性名字,即使数据类型不同,或者权限不同,也会覆盖,很霸道的覆盖;虽然覆盖了,但它还有被覆盖的属性,只是不能直接访问而已,通过super访问或通过相关接口进行访问 详见Banana.java和plant.java
============================================================ public void speak();--------speak
public void speak(int i);---spaek_int
public void speak(int i,int j);---spaek_int_int
实际方法标识符只与方法名和参数类型有关
============================================================