【Java基础】面向对象三个特征(3):多态
2020-12-20 05:34
标签:col 安全 良好的 编译报错 注意 成员方法 nim 变量 学生 一、多态的概述 多态:一个对象拥有多种形态 eg:小明是一个学生(学生形态),同时也是一个人(人类形态) 多态的格式与使用:父类引用指向子类对象 格式:父类名称 对象名 = new 子类名称() 接口名称 接口名 = new 实现类名称() 多态中访问成员变量、成员方法: 成员变量:编译看左边,运行看左边 成员方法:编译看左边,运行看右边 多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理 二、向上、向下转型 向上转型: 格式(与多态的写法一致): 父类名称 对象名 = new 子类名称() 含义:右边创建一个子类对象,但把它当做父类对象来看待使用; 注意事项:向上转型一定是安全的(子类转向父类,子类小范围转向父类大范围) 向下转型: 格式:子类名称 对象名 = (子类名称) 父类对象 含义:将父类对象,转向本来的子类对象 三、instanceof关键字 通过此关键字,可以判断父类引用的对象本来属于哪个子类。 【Java基础】面向对象三个特征(3):多态 标签:col 安全 良好的 编译报错 注意 成员方法 nim 变量 学生 原文地址:https://www.cnblogs.com/jcl226/p/13326732.htmlpublic class Demo01test {
public static void main(String[] args) {
//格式:父类引用指向子类对象
Animal cat = new Cat();
System.out.println(cat.num);
//访问成员方法
cat.eat();//父子都有,优先用子
cat.run();//子类没有,父类有,向上找到父类
//无法调用子类特有的方法
// 编译看左边,左边是父类,父类没有这个方法,所有编译报错
//cat.catchMouse();错误写法!!!
}
}
public class Demo02Test {
public static void main(String[] args) {
Animal animal = new Dog();
judge(animal);
}
public static void judge(Animal animal){
if (animal instanceof Cat){
Cat cat = (Cat) animal;
cat.catchMouse();
}
if(animal instanceof Dog){
Dog dog = (Dog) animal;
dog.breakHome();
}
}
上一篇:Python之路博客目录
下一篇:Spring配置多数据源
文章标题:【Java基础】面向对象三个特征(3):多态
文章链接:http://soscw.com/index.php/essay/37360.html