首页 > 代码库 > 面向对象----多态、类型的转换

面向对象----多态、类型的转换

多态:

同一个"接口",,因不同的实现而执行不同的套作。

多态的优点:

提高代码的扩展性和可维护性。

多态实现的前提:

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;
* }

 

面向对象----多态、类型的转换