对象的声明,创建与赋值的3个步骤
Dog myDog=new Dog();
1 对象一个引用变量,要求java虚拟机分配空间给引用变量并将此引用变量命名为myDog此引用变量将永远固定为Dog类型
Dog myDog
2 创建对象
new Dog();
3 连接对象和引用
=
重点在与引用类型与对象的类型必须是相符,在多态下面引用与对象可以是不同的类型假设Animal Dog类继承了Animal
Animal myDog=new Dog();
运用多态的时候引用类型可以是实际对象类型的父类参数和返回类型也可以是多态。
方法覆盖的规则
方法就是合约的标志
1 参数必须要一样,且返回类型必须要求兼容
2 不能降低方法的存取权限
public class Monster {
boolean frighten(int d){
System.out.print("a");
return true;
}
}
public class Vampire extends Monster {
boolean frighten(int x){
System.out.print("b");
return false;
}
}
这段代码是对的,符合
1 参数必须要一样,且返回类型必须要求兼容
2 不降低方法的存取权限
public class Monster {
boolean frighten(int d){
System.out.print("a");
return true;
}
}
public class Vampire extends Monster {
int frighten(int x){
System.out.print("b");
return 1;
}
}
这段返回类型不一致,java不能编译通过
The return type is incompatible with Monster.frighten(int)
public class Monster {
boolean frighten(int d){
System.out.print("a");
return true;
}
public static void main(String []args){
Monster vampire =new Vampire();
byte i=1;
vampire.frighten(i);
}
}
public class Vampire extends Monster {
boolean frighten(byte x){
System.out.print("b");
return false;
}
}
由于Vampire类的方法frighten()没有实现覆盖所以
vampire.frighten(i); 调用的是父类Monster的 boolean frighten(int d)方法。