Java#19(面向对象三大特征之一:多态)
创始人
2024-02-06 08:38:23
0

 

目录

一.多态

二.多态中调用成员的特点

三.instanceof关键字


一.多态

多态:同类型的对象,表现出的不同形态

格式:父类类型 对象名称 = 子类对象;

前提:

(1)有继承关系

(2)有父类引用指向子类对象

(3)有方法重构

优点:

(1)使用父类作为参数,可以接收所有子类对象

(2)体现多态的扩展性和便利

代码示范:

第一段为父类Person,第二,第三,第四段分别是3个子类,第五段是测试代码

package Demo;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void show(){System.out.println(name+","+age);}
}
package Demo;public class Student extends Person{//重写方法@Overridepublic void show(){System.out.println("学生的姓名为:"+getName()+" 年龄为:"+getAge());}}
package Demo;public class Teacher extends Person{//重写方法@Overridepublic void show(){System.out.println("老师的姓名为:"+getName()+" 年龄为:"+getAge());}
}
package Demo;public class Administrator extends Person{@Overridepublic void show(){System.out.println("管理员的姓名为:"+getName()+" 年龄为:"+getAge());}
}
package Demo;import java.rmi.registry.Registry;public class Test {public static void main(String[] args) {//创建对象Student s = new Student();s.setName("zhangsan");s.setAge(19);Teacher t = new Teacher();t.setName("lisi");t.setAge(31);Administrator admin = new Administrator();admin.setName("wangwu");admin.setAge(40);register(s);register(t);register(admin);}//这个方法可以接收学生,老师,还有管理员//将父类写在参数位置public static void register(Person p){p.show();}
}

结果展示:s是学生对象,t是老师对象,admin是管理员对象

二.多态中调用成员的特点

调用成员变量:编译看左边,运行也看左边

(编译看左边:javac编译代码时,会看左边父类有没有这个变量,如果有,编译成功,如果没有,编译失败; 运行看左边:java运行代码时,实际上运行的是左边父类的成员变量)

调用成员方法:编译看左边,运行看右边

(编译看左边:javac编译代码时,会看左边父类有没有这个方法,如果有,编译成功,如果没有,编译失败; 运行看右边:java运行代码时,实际上运行的是右边子类的成员方法)

代码示范:

package Demo1;public class Test {public static void main(String[] args) {Animal a = new Cat();System.out.println(a.name);a.show();}
}
//父类Animal
class Animal{String name = "动物";public void show(){System.out.println("animal show");}
}
//子类Cat
class Cat extends Animal{String name = "猫";@Overridepublic void show(){System.out.println("cat show");}
}

结果展示:

三.instanceof关键字

格式:对象名 instanceof 类名; (判断这个对象是不是后面这个类,是返回true,不是返回false)

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...