Java:多态 之 向上转型
2017-10-21 11:24
225 查看
知识总结:
父类:
Animal.java:
Cat.java:
Dog.java:
test.java:
Animal two=new Cat();//2
Animal three=new Dog();//3
one.eat();
two.eat();
three.eat();
two.setMonth(3);
two.getMonth();
three.setName("花花");
three.getName();
//two.run();编译错误
//three.sleep();编译报错
}
}
向上转型也可以写成:
执行情况:
父类:
Animal.java:
package com.imooc.animal; public class Animal { private String name; private int month; public Animal(){ } public Animal(String name,int month){ this.setName(name); this.setMonth(month); } //eat() public void eat(){ System.out.println("动物都又吃东西的能力!"); } //getter/setter public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } }
Cat.java:
package com.imooc.animal; public class Cat extends Animal { private String name; private int month; private double weight; public Cat(){ } public Cat(String name,int month,double weight){ super(name,month);//super父类属性构造方法赋值 setWeight(weight); } //run public void run(){ System.out.println("猫会跑"); } //方法重写 @Override public void eat() { System.out.println("猫吃鱼!"); } //getter/setter public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } }
Dog.java:
package com.imooc.animal; public class Dog extends Animal { private String name; private int month; private String sex; public Dog(){ } public Dog(String name,int month,String sex){ super(name,month); this.setSex(sex); } //sleep public void sleep(){ System.out.println("小狗会午睡"); } //方法重写 @Override public void eat() { System.out.println("狗吃肉!"); } //getter/setter public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
test.java:
package com.imooc.test; import com.imooc.animal.Animal; import com.imooc.animal.Cat; import com.imooc.animal.Dog; public class test { public static void main(String[] args) { Animal one=new Animal();//1/* * 向上转型(隐式转型),自动转型 * 父类引用指向子类的实例,可以调用子类重写父类的方法以及父类的派生方法,但是该对象无法调用子类独有的方法 * 注意:父类中的静态方法无法被子类重写,所以向上转型之后,只能调用父类原油的的静态方法 * 小类转大类 */
Animal two=new Cat();//2
Animal three=new Dog();//3
one.eat();
two.eat();
three.eat();
two.setMonth(3);
two.getMonth();
three.setName("花花");
three.getName();
//two.run();编译错误
//three.sleep();编译报错
}
}
向上转型也可以写成:
执行情况:
相关文章推荐
- java多态的向上转型与向下转型(与编译时类型与运行时类型有关)
- java 什么是多态?多态的三种表现形式?什么是向上转型和向下转型?多态的利和弊?
- JAVA笔记-多态的意义(向上转型与向下转型)
- 0905 Java中多态的向上转型和向下转型
- java的多态(向上转型、向下转型)
- 从零开始学Java之多态 向上转型与向下转型
- Java多态——向上转型与向下转型
- (原)java 向上转型中,任何域的访问操作都是由编译器解析,不是多态
- Java_SE_学习笔记_①——Java多态——向上转型的意义
- Java编程:多态和向上转型
- java多态中向上转型+重写的奥秘
- Java多态(利用向上向下转型和反射机理)
- Java多态(利用向上向下转型和反射机理)
- (多态)Java向上转型之后调用子类的同名变量/方法的问题
- 多态实现(向上转型、向下转型)--java
- 【转载】Java 多态、向上转型
- 关于java的向上转型和多态
- java编程技巧中的多态,类型向上转型
- Java 多态 后链接(late binding)与前链接(early binding) 向上转型(upcast)
- Java多态之向上转型、同名变量以及方法覆盖