面向对象----多态类型的转换
Posted 奔跑智者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象----多态类型的转换相关的知识,希望对你有一定的参考价值。
多态:
同一个"接口",,因不同的实现而执行不同的套作。
多态的优点:
提高代码的扩展性和可维护性。
多态实现的前提:
1.继承。
2.方法的重写。
3.父类引用指向子类。
多态在Java中实现的步骤:
1.建立继承关系。
2.在编译时将父类作为形参(范围大点,模糊点)。
3.在运行时将子类对象作为实参,执行的子类重写后的方法。
---------------------------------------------------------------------------------------------------------
public class Animal {
String name;
int age;
public Animal(){
}
public Animal(String name,int age){
this.name=name;
this.age=age;
}
public void shout(){
System.out.println("动物在叫.....");
}
public class Cat extends Animal {
@Override
public void shout() {
System.out.println("喵喵喵~~~~~~~~~~~");
}
}
---------------------------------------------------------------------------------
public class Dog extends Animal {
@Override
public void shout() {
System.out.println("汪汪汪~~~~~~~~~~~");
}
}
---------------------------------------------------------------------------------
public class TestAnimal {
public static void testShout(Animal a) {
System.out.println("比赛开始....");
a.shout();
}
public static void main(String[] args) {
Dog dog = new Dog();
testShout(dog);
Cat cat = new Cat();
testShout(cat);
}
}
当利用父类创建子类时发生了向上转型:
1.上转型对象不能操作子类新增的成员变量和方法。
2.上转型对象可以操作子类继承或重写的成员变量和方法
3.如果子类重写了父类的某个方法,上转型对象调用该方法时,是调用的重写方法。
instance of运算符判断对象是否为指定类型的实例。如果是指定类型的实例返回值为true,否则返回false
* 语法: 对象 instanceof 类型
* 防止在类型转换时出现ClassCastException异常。
* if(a instanceof Cat){
* Cat c=(Cat)a;
* }
以上是关于面向对象----多态类型的转换的主要内容,如果未能解决你的问题,请参考以下文章