java多态概述特点转型I

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的更多相关文章
- Java多态的向上转型和向下转型
Java多态的向上转型和向下转型 向上转型:(子类转为父类,自动转型) 格式 :父类类型 变量名 = new 子类类型(); 注:子类赋值给父类,那这时这个父类就能调用子类的方法 向下转型:(父类转为 ...
- Java多态之向上转型
目录 Java多态之向上转型 多态的优点 向上转型 概念 向上转型好在哪 Java多态之向上转型 多态性是面向对象的第三大特征. 多态的优点 改善代码的组织结构和可读性. 能够创建可扩展的程序.(随时 ...
- java多态的向上转型与向下转型(与编译时类型与运行时类型有关)
1.编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定. 当编译时类型和运行时类型不一致时,就会出现所谓的多态. 因为子类是一个特殊的父类,因此java允许把一个子类对象直接 ...
- Java多态、向上转型、向下转型知识分享(讲解全面)
多态(方法的多态.对象的多态) 方法的多态 重写的多态(重要):子类继承父类,因此子类拥有父类属性和方法,如果子类重写父类方法,那么父类调用该方法的时候就会检查子类是否重写该方法,子类重写了就调用子类 ...
- Java多态概述
多态 所谓多态,实际上就是一个对象的多种状态: 下面例子中,Tiger可以看做Tiger,也可以看做Animal Cat 可以看做Cat,也可以看做Animal Dog 可以看做Dog,也可以看做A ...
- java 多态(向上转型)
多态的定义与使用格式 多态的定义格式:就是父类的引用变量指向子类对象 父类类型 变量名 = new 子类类型(); 变量名.方法名(); 普通类多态定义的格式 父类 变量名 = new 子类(); ...
- Java 面向对象概述原理: 多态、Object类,转型(8)
Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...
- Java多态之向下转型
目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父 ...
- 多态,向上转型,向下转型,final关键字
多态 概述 多态封装性,继承性之后,面向对象的第三大特性. 定义 多态:是指同一种行为,具有多个不同的表现形式. 生活中,比如跑的动作,猫,狗,大象跑起来的动作都是不一样的,再比如飞的动作 ...
随机推荐
- centos使用docker安装mysql5.7
搜索镜像 docker search mysql 拉取镜像 docker pull mysql:5.7 启动mysql镜像 docker run -p 3306:3306 --name mysql - ...
- 【九度OJ】题目1176:树查找 解题报告
[九度OJ]题目1176:树查找 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1176 题目描述: 有一棵树,输出某一深度的所有节点 ...
- 【LeetCode】478. Generate Random Point in a Circle 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/generate ...
- [LeetCode]621. Task Scheduler 任务安排 题解
题目描述 给定一个char数组,代表CPU需要做的任务,包含A-Z,不用考虑顺序,每个任务能在1个单位完成.但是有规定一个非负整数n代表两个相同任务之间需要至少n个时间单位.球最少数量的时间单位完成所 ...
- Parenthesis
G - Parenthesis Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu De ...
- cosface: large margin cosine loss for deep face recognition
目录 概 主要内容 Wang H, Wang Y, Zhou Z, et al. CosFace: Large Margin Cosine Loss for Deep Face Recognition ...
- Deep Linear Networks with Arbitrary Loss: All Local Minima Are Global
目录 问题 假设和重要结果 证明 注 Laurent T, Von Brecht J H. Deep linear networks with arbitrary loss: All local mi ...
- 跨域The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.解决方案
使用Ajax跨域请求资源,Nginx作为代理,出现:The 'Access-Control-Allow-Origin' header contains multiple values '*, *', ...
- CapstoneCS5212替代RTD2166|DP转VGA转换电路设计方法|CS5212替代方案
Capstone CS5212适用于设计DP转VGA转换电路,主要用在嵌入式单片机基于工业机或者INTEL X86主板上面,也适用于多个电子配件市场和显示器应用程序,如笔记本电脑.主板.台式机.适配器 ...
- JS常见框架汇总
基础框架 Vue.js 官网地址 : http://cn.vuejs.org/ 官方简介 : Vue.js 是一套用于构建用户界面的渐进式框架. 框架类型 : 前端项目级框架 适用平台 : 通用 仓库 ...