Java之路---Day12(多态)
2019-10-28 06:27:01来源:博客园 阅读 ()
Java之路---Day12(多态)
2019-10-26-22:40:09
目录:
1.多态的概念
2.多态的分类
3.实现多态的三个必要条件
4.多态的格式
5.多态成员变量的使用特点
6.多态成员方法的使用特点
7.多态的好处
8.多态的向上和向下转型
1.多态的概念:
多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义
2.多态的分类:
编译时多态(静态):主要是指方法的重载,它是根据参数列表的不同来区分不同的方法
运行时多态(动态):它是通过动态绑定来实现的,也就是大家通常所说的多态性。
3.实现多态的三个必要条件:
1. 继承:在多态中必须存在有继承关系的子类和父类。
2.重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
3.向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。
1 package demosummary.polymorphic;
2
3 public class Fu {
4 //定义两个变量
5 double d1;
6 double d2;
7
8 //无参构造
9 public Fu() {
10 }
11
12 //全参构造
13 public Fu(double d1, double d2) {
14 this.d1 = d1;
15 this.d2 = d2;
16 }
17
18 //设置一个方法
19 public void area(double d1,double d2){
20 }
21 }
1 package demosummary.polymorphic;
2 //创建一个继承父类的子类
3 public class Zi extends Fu{
4 //重写父类中的方法
5 @Override
6 public void area(double d1, double d2) {
7 double result = d1 * d2;
8 System.out.println("计算结果:"+result);
9 }
10
11 //测试方法
12 public static void main(String[] args) {
13 //向上转型(多态的写法)
14 Fu obj = new Zi();
15 obj.area(3.5,3.5);
16 }
17 }
4.多态的格式:
父类名称 对象名 = new 子类名称();
接口名称 对象名 = new 实现类名称();
5.多态成员变量的使用特点:
1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。
2.间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。
1 package demosummary.polymorphic;
2 //定义一个父类
3 public class Fu01 {
4 //定义一个成员变量
5 int num = 10;
6 //定义一个成员方法
7 public void showNum(){
8 //定义一个局部变量
9 // int num01 = 100;
10 System.out.println(num);
11 // System.out.println(num01);
12 }
13 }
1 package demosummary.polymorphic;
2
3 public class Zi01 extends Fu01{
4 //定义一个成员变量
5 int num = 20;
6 //覆盖重写父类方法
7 @Override
8 public void showNum() {
9 //定义一个局部变量
10 // int num01 = 200;
11 System.out.println(num);
12 // System.out.println(num01);
13 }
14 //定义一个测试类
15 public static void main(String[] args) {
16 Fu01 obj = new Zi01();
17 System.out.println(obj.num);
18 obj.showNum();
19 }
20 }
6.多态成员方法的使用特点:
在多态的代码当中,成员方法的访问规则是:
看new的是谁, 就优先用谁,没有则向上找。
口诀:编译看左边,运行看右边。
对比一下:
成员变量:编译看左边,运行还看左边。
成员方法:编译看左边,运行看右边。
7.多态的好处:
不使用多态的写法:
Teacher one = new Teacher();
one.work();
Assistant two = new Assistant();
two.work();
使用多态的写法:
Employee one = new Teacher();
one.work();
Employee two = new Assistant();
two.work();
对比结论:无论右边new的时候换那个子类对象,等号左边调用方法都不会变化
8.多态的向上和向下转型:
向上转型:
父类名称 对象名 = new 子类名称();
含义:右侧创建一个子类对象,把它当成父类看待使用
注意事项:向上转型一定是安全的,从小范围转向大范围
向下转型:
子类名称 对象名 = (子类名称)父类对象;
含义:将父类对象还原成为本来的子类对象
注意事项
1.必须保证对象本来创建的时候。就是猫。才能向下转型成为猫。
2.如果对象创建的时候本来不是猫,现在非要向下转型成为猫,就会报错。
原文链接:https://www.cnblogs.com/hpcz190911/p/11746435.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash