您的位置:首页 > 编程语言 > Java开发

java特性多态 向上和向下转型

2019-02-15 09:32 423 查看

多态:多种形态。 父类的引用指向子类的对象。

  • 父类的引用作为方法的形参
  • 父类的引用作为方法的返回值类型
  • (多态)父类在调用方法时 如果子类有重写过的方法 会执行子类重写后的
/**
* 主人类
* @author Charles
*
*/
public class Master {

/*public void feedMonkey(Monkey monkey) {

}

public void feedTiger(Tiger tiger) {

}*/

// 多态:父类的引用/声明   指向了子类的对象
// 多态应用1.父类的引用可以作为方法的形参
// Pet pet = new Pet();
// Pet pet = new Monkey();
// Pet pet = new Tiger();
public void feedPet(Pet pet) {
// 父类的引用无法直接调用子类特有的内容
// instanceof 判断对象是否是某个类型
if(pet instanceof Monkey) {
System.out.println("香蕉香蕉!");
}else if(pet instanceof Tiger) {
System.out.println("猴子猴子!");
}
}

/*public Monkey getMonkey() {
return new Monkey();
}

public Tiger getTiger() {
return new Tiger();
}*/
// 多态应用2.父类的引用可以作为方法的返回值类型
public Pet getPet(int choice) {
if(choice == 1) {
return new Monkey();
}else if(choice == 2) {
return new Tiger();
}
return null;
}

}

四.会使用instanceof运算符

instanceof(…的对象/实例):用来判定是否是某个类型的对象。

String str1 = "xxx";

str1(对象) instanceof String(类型)
表示判断str1是否是字符串类型

五.会使用向上、向下转型

类型转换。

自动类型转换

强制类型转换

Pet pet = new Monkey(); // 自动类型转换 向上转型

// 父类的引用无法调用子类的特有特征 所以需要强转

Monkey mon = (Monkey)pet; // 强制类型转换 向下转型

一般配合instanceof进行转型!

if(pet instanceof Monkey){

Monkey mon = (Monkey)pet;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: