java疯狂讲义学习记录:
1.重写父类方法
规则:两同两小一大:方法名相同,参数类型相同;子类方法返回值类型比父类方法返回值类型更小或相等,子类方法生命抛出的异常类型应比父类方法生命抛出的异常类更小或是相等;一大是子类方法的访问权限应比父类方法的访问权限更大或是相等
注意、;如果父类中的方法具有private访问权限,说明对子类是隐藏的,所以即使子类定义了同一个方法,也不是重写,只是子类重新定义了一个新的方法。
2.调用父类构造器
子类不会获得父类的构造器,但是子类构造器里可以调用父类构造器的初始化代码。
子类调用父类的构造函数有以下情况
1)子类构造器执行体的第一行使用super显示调用父类的构造器,系统将根据super调用里传入的实参列表调用父类对应的构造器
2)子类构造器执行体的第一行代码使用this显示调用本类中重载的构造器,系统将根据this调用里传入的实参列表调用本类中的另一个构造器,执行本类中另一个构造器时,即会调用父类的构造器
3)子类构造器执行体中既没有super也没有this,系统将会在执行子类构造器之前,隐式的调用父类无参数的构造器
class Creature{
public Creature()
{
System.out.println("Creature构造器");
}
}
class Animal extends Creature
{
public Animal(String name)
{
System.out.println("Animal一个参数的构造器");
}
public Animal(String name,int age)
{
this(name);
System.out.println("Animal两个参数的构造器");
}
}
public class Wolf extends Animal{
public Wolf()
{
super("灰太狼",2);
System.out.println("Wolf无参构造函数");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Wolf();
}
}
结果:
Creature构造器
Animal一个参数的构造器
Animal两个参数的构造器
Wolf无参构造函数
3.继承中的实例变量
当程序创建一个子类对象时系统不仅会为该类中定义的实例变量分配内存,还要为该类从其父类继承得到的所有的实例变量分配内存,即使子类定义了与父类中同名的实例变量;也就是说,当系统创建了一个java对象时,如果该java类有两个父类,一个是直接父类A 一个是间接父类B,假设A 类中有2个实例变量,B 类中定义了3个实例变量,当前类中定义了2个实例变量,那么这个java对象将会保存2+3+2个实例变量。