1 package face_09;
2
3 import com.sun.jdi.Method;
4
5 /*
6 * 对象的多态性。
7 * class 动物
8 * {}
9 *
10 * class 猫 extends 动物
11 * {}
12 *
13 * class 狗 extends 动物
14 * {}
15 *
16 * 猫 x = new 猫();
17 *
18 * 动物 x = new 猫();//一个对象,两种形态。
19 *
20 * 猫这类事物既具备猫的形态,又具备着动物的形态。
21 * 这就是对象的多态性。
22 *
23 * 简单说:就是一个对象对应着不同类型。
24 *
25 * 多态在代码中的体现:
26 * 父类或者接口的引用指向其子类的对象。
27 * 多态的好处:
28 * 提高了代码的扩展性,前期定义的代码可以使用后期的内容。
29 *
30 * 多态的弊端:
31 * 前期定义的内容不能使用(调用)后期子类的特有内容。
32 *
33 * 多态的前提:
34 * 1,必须有关系,继承,实现。
35 * 2,要有覆盖。
36 */
37 abstract class Animal {
38 abstract void eat();
39 }
40
41 class Dog extends Animal {
42 void eat() {
43 System.out.println("啃骨头");
44 }
45 void lookHome() {
46 System.out.println("看家");
47 }
48 }
49 class Cat extends Animal {
50 void eat() {
51 System.out.println("吃鱼");
52 }
53 void catchMouse() {
54 System.out.println("抓老鼠看家");
55 }
56 }
57 class Pig extends Animal {
58 void eat() {
59 System.out.println("饲料");
60 }
61 void gongDi() {
62 System.out.println("拱地");
63 }
64 }
65 public class DuoTaiDemo {
66 public static void main(String[] args) {
67 //Cat c = new Cat();
68 //c.eat();
69 //Dog d = new Dog();
70 //method(c);
71 //method(d);
72 //method(new Pig());
73 Animal a = new Cat();//自动类型提升,猫对象提升了动物类型。但是特有功能无法访问
74 //作用就是限制对特有功能的访问。
75 //专业讲:向上转型。将子类型隐藏。就不用使用子类型的方法。
76 //如果还想用具体动物猫的特有功能。
77 //你可以将该对象进行向下转型。
78 Cat c = (Cat)a;//*向下转型的目的是为了使用子类中的特有方法。
79 c.catchMouse();
80 c.eat();
81 //*注意:对于转型,自始至终都是子类对象在做着类型的变化
82 //Animal a1 = new Animal();
83 Animal a1 = new Dog();
84 Cat c1 = (Cat)a1;//ClassCastException类型转换异常
85 //a.eat();
86 }
87 public static void method(Animal a) {//类型判断
88 a.eat();
89 if(a instanceof Cat) {//instanceof:用于判断对象的具体类型。Cat可以是类可以是接口,只能用于引用数据类型判断
90 Cat c = (Cat)a;//通常在向下转型前用于健壮性的判断。
91 c.catchMouse();
92 }else if (a instanceof Dog) {
93 Dog d = (Dog)a;
94 d.lookHome();
95 }
96 }
97 /*
98 public static void method(Cat c) {
99 c.eat();
100 }
101 public static void method(Dog d) {
102 d.eat();
103 }
104 */
105
106 }

java多态概述特点转型I的更多相关文章

  1. Java多态的向上转型和向下转型

    Java多态的向上转型和向下转型 向上转型:(子类转为父类,自动转型) 格式 :父类类型 变量名 = new 子类类型(); 注:子类赋值给父类,那这时这个父类就能调用子类的方法 向下转型:(父类转为 ...

  2. Java多态之向上转型

    目录 Java多态之向上转型 多态的优点 向上转型 概念 向上转型好在哪 Java多态之向上转型 多态性是面向对象的第三大特征. 多态的优点 改善代码的组织结构和可读性. 能够创建可扩展的程序.(随时 ...

  3. java多态的向上转型与向下转型(与编译时类型与运行时类型有关)

    1.编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定. 当编译时类型和运行时类型不一致时,就会出现所谓的多态. 因为子类是一个特殊的父类,因此java允许把一个子类对象直接 ...

  4. Java多态、向上转型、向下转型知识分享(讲解全面)

    多态(方法的多态.对象的多态) 方法的多态 重写的多态(重要):子类继承父类,因此子类拥有父类属性和方法,如果子类重写父类方法,那么父类调用该方法的时候就会检查子类是否重写该方法,子类重写了就调用子类 ...

  5. Java多态概述

    多态 所谓多态,实际上就是一个对象的多种状态: 下面例子中,Tiger可以看做Tiger,也可以看做Animal Cat  可以看做Cat,也可以看做Animal Dog 可以看做Dog,也可以看做A ...

  6. java 多态(向上转型)

    多态的定义与使用格式 多态的定义格式:就是父类的引用变量指向子类对象 父类类型  变量名 = new 子类类型(); 变量名.方法名(); 普通类多态定义的格式 父类 变量名 = new 子类(); ...

  7. Java 面向对象概述原理: 多态、Object类,转型(8)

    Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...

  8. Java多态之向下转型

    目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父 ...

  9. 多态,向上转型,向下转型,final关键字

    多态 概述   多态封装性,继承性之后,面向对象的第三大特性. 定义   多态:是指同一种行为,具有多个不同的表现形式.   生活中,比如跑的动作,猫,狗,大象跑起来的动作都是不一样的,再比如飞的动作 ...

随机推荐

  1. Spring支持的常用数据库传播属性和事务隔离级别

    一.事务的传播属性 1.propagation:用来设置事务的传播行为,一个方法运行在了一个开启了事务的方法中时,当前方法是使用原来的事务还是开启一个新的事务. (1)propagation.REQU ...

  2. 分享一下java需要的一些技术

    1.前言 you are 大哥,老衲很佩服你们_.还是一样的,有我联系方式的人,哪些半吊子不知道要学习哪些技术,一天让我整知识点,老衲也有事情做的,哪有那么多时间来一直搞知识点啊,我的博客更新很慢的, ...

  3. 【LeetCode】599. Minimum Index Sum of Two Lists 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:找到公共元素再求索引和 方法二:索引求和,使 ...

  4. C. Hongcow Builds A Nation

    C. Hongcow Builds A Nation time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  5. 最大流问题的Ford-Fulkerson模板

    详细讲解:http://blog.csdn.net/smartxxyx/article/details/9293665 下面贴上我的第一道最大流的题: hdu3549 1 #include<st ...

  6. 第九个知识点:香农(Shannon)定义的熵和信息是什么?

    第九个知识点:香农(Shannon)定义的熵和信息是什么 这是计算机理论的最后一篇.我们讨论信息理论的基础概念,什么是香农定义的熵和信息. 信息论在1948年被Claude E.Shannon建立.信 ...

  7. 想看Vue文档,cn放错位置,误入xx网站...

    昨晚,DD在微信群(点击加入)里看到有小伙伴说,想去Vue官网看中文文档,不当心把cn写错了位置,结果进入了xx网站... 老司机们应该都知道,Vue官网的中文文档地址是:https://cn.vue ...

  8. Android物联网应用程序开发(智慧园区)—— 图片预览界面

    效果图: 实现步骤: 1.首先在 build.gradle 文件中引入 RecycleView implementation 'com.android.support:recyclerview-v7: ...

  9. 制作四个选项卡页 Tab,用户可以通过切换不同的 Tab 页查看不同类别的新闻信息,每个 Tab 有对应的内容版块,点击某个选项卡时,显示对应的内容版块,隐藏其他内容版块,并且为了突出当前的选项卡,还

    查看本章节 查看作业目录 需求说明: 制作四个选项卡页 Tab,用户可以通过切换不同的 Tab 页查看不同类别的新闻信息,每个 Tab 有对应的内容版块,点击某个选项卡时,显示对应的内容版块,隐藏其他 ...

  10. Log4j2完整XML参考(详细注释说明)

    1.说明 本文提供完整的log4j2.xml配置文件, 供开发中参考使用,可以作为模板, 配置对应实现如下常用的功能: 1.自动检测和重新加载配置,每10分钟(600s)检测一次 2.每个日志文件最大 ...