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 ...
随机推荐
- Python基础篇_实例练习1
1.逢7跳过小游戏:从1-100之间,遇到带7的数字或者7的倍数跳过. for i in range(1,101): if i == 7 or i % 10 == 7 or i // 10 == 7: ...
- C# 时间戳(TimeStamp)与时间(DateTime)的互相转换
什么是时间戳:时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数. 时间戳在线转换网址:https://tool.lu/ ...
- Python第二周作业
绘制五角星 import turtle turtle.color('black','red') turtle.pensize(10) turtle.begin_fill() for i in rang ...
- 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~
物联网软硬件开发 知识分享 多年学生项目开发经验 物联网 软硬件系统 树莓派 单片机 esp32 小程序 网页 开发 欢迎相互交流学习~ http://39.105.218.125:9000/
- 常用正则表达式(手机号、邮箱、URL地址、身份证等等)
一.前言 不好的习惯:1.每一次用到正则都是上网copy一份,也没有去学习思考,看看都是什么意思: 2.一个项目里不同的地方用到了相同的校验,一直在重复的copy代码,并没有统一起来,万一哪天要修改规 ...
- Windows下利用Chrome调试IOS设备页面
本文介绍如何在 Windows 系统中连接 iOS设备 并对 Web 页面进行真机调试 必须前提 iOS设备.数据线 Node.js 环境 Chrome 浏览器 环境准备 安装Node环境 参考Nod ...
- Chrome EC框架探索_0.0_引言
0.0 引言 嵌入式硬件抽象框架常常面临着这样的尴尬:封装层次较高的(arduino,mbed)不能充分暴露必要的API并面临着性能问题,封装层次较低的(HAL,LL)接口复杂且开发困难.近日发现的一 ...
- 由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set
2019-10-14 22:21:29 问题描述: 问题求解: 暴力求解必然会超时,那么就需要考虑数学的方法来降低时间复杂度了. public int atMostNGivenDigitSet(Str ...
- Contest 157
2019-10-06 12:15:28 总体感受:总体难度一般,dfs和dp题花了点时间,最后一题dp有思路,但是实现上不够好. 注意点:首先是hard问题的覆盖度依然是很大的问题,其次是要注意审题. ...
- 5L-链表导论心法
链表是比数组稍微复杂一点的数据结构,也是两个非常重要与基本的数据结构.如果说数组是纪律严明排列整齐的「正规军」那么链表就是灵活多变的「地下党」. 关注公众号 MageByte,有你想要的精彩内容. 链 ...