您的位置:首页 > 其它

向上转型

2016-06-03 08:46 232 查看
/*
*本代码无任何实际意义,只是自学中记录学习的东西而已。如有不对请批评指正为谢。
*/
class Animal {
String name;
int age;
String size;
Animal(){
System.out.println("无参构造");
}
Animal(String name,int age){
this();
this.name = name;
this.age = age;
System.out.println("两个参数构造");
}
Animal(String size,int age,String name){
this(name,age);
this.size = size;
System.out.println("三个参数构造");
}
void activity(){
System.out.println("run");
}
void getInfo(){
System.out.println("Animal的名字:" + this.name + "年龄:" + this.age + "大小:" + this.size);
}
}

class Dog extends Animal{
String sexy;
Dog(){
System.out.println("Dog无参构造");
}

Dog(String name,int age){
super(name,age);
System.out.println("Dog两个参数构造");
}
Dog(String name,int age,String size){
super(size,age,name);
System.out.println("Dog三个参数构造");
}
Dog(String name,int age,String size,String sexy){
super(size,age,name);
this.sexy = sexy;
System.out.println("Dog四个参数构造");
}
void activity(){
super.activity();
System.out.println("woof");
}
void getInfo(){
System.out.println("Animal的名字:" + this.name + "年龄:" + this.age + "大小:" + this.size + "性别:" + this.sexy);
}
void eat(){
System.out.println("eat");
}
}

public class TestDemo  {
public static void main (String args[]){
Animal d = new Dog("anmi",12,"small","male");//父类引用可以用子类的构造方法,
System.out.println("Animal的名字:" + d.name);
System.out.println("年龄:" + d.age);
System.out.println("大小:" + d.size);
// System.out.println("性别:" + d.sexy);//错误: 找不到符号,父类引用不能调用子类变量。
d.getInfo();//虽然System.out.println("性别:" + d.sexy);这行代码不能显示sexy这个属性,但是调用复写的getInfo方法却可以。
d.activity();//这里调用的父类引用调用方法时调用的却是子类复写后的方法。
// d.sexy = "female"; //错误: 找不到符号,父类引用不能调用子类变量。
//d.eat();//错误: 找不到符号,父类引用不能调用子类方法。
}

}
/*output
无参构造
两个参数构造
三个参数构造
Dog四个参数构造
Animal的名字:anmi
年龄:12
大小:small
Animal的名字:anmi年龄:12大小:small性别:male
run
woof
*/
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: