Java第十天,多态
多态
一、多态的定义:
一个对象拥有多种形态,这就是对象的多态性。也就是说多态针对的是对象。多态的前提是接口和继承(C++中实行多继承,不存在接口)。
二、多态在代码中的形式:
父类 对象名 = new 子类();
或者
接口 对象名 = new 实现类();
三、成员方法使用规则:
右边new的是谁,便使用谁的成员方法(编译看左,运行看右)。
四、成员变量使用规则:
①直接通过对象名访问成员变量:
看等号左边是谁,则优先用谁。没有则向上找。
②间接通过成员方法访问成员变量:
看该方法属于谁,则优先用谁,没有则向上找。
五、对象的转型:
①向上转型
(1)其实就是多态的写法,左父右子。向上转型一定是安全的。
(2)对象无法调用子类特有方法。
②向下转型
(1)其实就是还原过程(只能还原为原来类别)。格式为:
子类 对象名 = (子类)父类对象
(2)转型很可能会失败(本来是猫,向上转为动物后,又向下转型为狗)。
(3)如何判断对象本来属于哪个类(子类)。
对象 instanceof 类 ==》 返回一个布尔值。
六、多态的注意事项:
- 只有成员方法才能覆盖重写,成员变量不可以覆盖重写。
- 父类如果要调用子类的方法必须要有同名方法。
- 多态情况下,子父类存在着同名的成员变量时,默认会访问父类的成员变量。
- 多态情况下,子父类存在着同名的非静态函数时,默认是访问子类的成员函数。
- 多态情况下,子父类存在着同名的静态函数时,默认是访问父类的成员函数。
- 多态情况下,不能访问子类特有的成员。
七、代码
Animal类:
package com.lanyue.day08;
public abstract class Animal {
public static String INFO = "动物界";
public abstract void eat();
public abstract void work();
}
Dog类:
package com.lanyue.day08;
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
@Override
public void work() {
System.out.println("狗能看家");
}
}
Cat类:
package com.lanyue.day08;
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void work() {
System.out.println("猫能抓老鼠");
}
public void catPlay(){
System.out.println("猫喜欢玩");
}
}
运行类:
package com.lanyue.day08;
public class Demo {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
dog.work();
Cat cat = new Cat();
cat.eat();
cat.work();
Animal animal = new Cat();
animal.eat();
animal.work();
if(animal instanceof Cat){
((Cat) animal).catPlay();
System.out.println("猫属于" + Animal.INFO);
}
}
}

Java第十天,多态的更多相关文章
- Java基础十二--多态是成员的特点
Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...
- java提高篇之理解java的三大特性——多态
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- Java基础学习小记--多态
题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪,特别对Coders来说,有几天不是加班到夜里.好吧,我承认对于初学Java的我, ...
- JAVA三大特性之多态
面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据 ...
- Java三大特征之多态(三)
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- 【转】java提高篇之理解java的三大特性——多态
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- JAVA 面向对象中的多态
多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...
- Java面试题,Java三大特性之一——多态的理解
首先我们知道Java是一门面向对象的语言 面向对象三大特性,封装.继承.多态. 封装.继承.多态 ↓ 无论是学习路线,还是众人的口语习惯,都是按照这个这样进行排序,这是有原因的.因为封装好了才能继承, ...
- JAVA第十周《网络编程》学习内容总结
JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...
- Java基础十--接口
Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...
随机推荐
- 再说scss
1. CSS预处理器 定义了一种新的专门的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代码的维护等诸多好处 ...
- 01.UNIX基础知识
1.UNIX体系结构 什么叫做内核? 内核是一种软件,它控制计算机硬件资源,并提供程序的运行环境. 什么叫操作系统? 在广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,如可以 ...
- 【Weiss】【第03章】练习3.11:比较单链表递归与非递归查找元素
[练习3.11] 编写查找一个单链表特定元素的程序.分别用递归和非递归实现,并比较它们的运行时间. 链表必须达到多大才能使得使用递归的程序崩溃? Answer: 实现都是比较容易的,但是实际上查找链表 ...
- java -输入年龄判断是否符合范围。
//创建的一个包名. package demo3; //定义一个类. public class Test { //公共静态的主方法. public static void main(String[] ...
- Mybatis---在控制台打印sql语句
在mybatis主配置文件中mybatis.xml的<configuration>标签中加入 <settings> <setting name="logImpl ...
- 我的MacbookPro进水了!维修过程记录
电脑进水与解决方案 如果事情有变坏的可能,不管这种可能性有多小,它总会发生.---墨菲定律 进水过程 2020年03月21日日下午3点左右,不小心把水杯碰倒了,水通过电脑右侧的键盘处进入了大概有10毫 ...
- 图解I/O模型
本文带你鸟瞰I/O模型全貌,希望可以让你对I/O模型有一个直观的认识 什么是I/O?I/O的过程?同步阻塞 I/O同步非阻塞 I/OI/O多路复用异步I/O 什么是I/O? I/O就是计算机内 ...
- 【简说Python WEB】数据库
目录 [简说Python WEB]数据库 数据库表 docker安装MySQL Flask-SQLAlchemy操纵MySQL数据库 初始化 定义模型 定义关系 数据库的CRUD操作 创建表 inse ...
- 还是只使用console.log()进行调试?好吧,其实还有更多。
在浏览器控制台中打印消息无疑可以拯救所有开发人员. console.log()消息就像您的大多数疾病的药,同时调试了代码中的一些有线问题. 那里的大多数开发人员都喜欢— 让我们在浏览器中打印消息以了解 ...
- 洛谷1265prim算法求最小生成树
题目链接:https://www.luogu.com.cn/problem/P1265 最小生成树的prim算法跟dijkstra算法非常像,就是将点分成两个集合,一个是已经在生成树中的点的集合,一个 ...