java多态
发布日期:2022-03-03 01:57:21
浏览次数:1
分类:技术文章
本文共 3431 字,大约阅读时间需要 11 分钟。
面向对象特征:抽象、封装、继承、多态
目录
多态:
(英语:polymorphism)指为不同的实体提供统一的。 Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。
多态体现为:父类引用变量可以指向子类对象。
前提条件:必须有继承关系。
注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
实现多态的三种方法:
1.方法的重写
2.继承父类
public class Father {}public class Son extends Father{}public class TestSon { public static void main(String[] args) {// Father father = new Father();// Son son = new Son(); //下面这行就称为多态(父类的引用指向了子类的对象) //通俗记忆小的赋值给大的// father = son; //下面这行称为强制类型转换// son = (Son)father; //多态的简写形式 Father father = new Son(); }}public class Grandma extends Object {}public class Mom extends Grandma{}public class Daughter extends Mom{}public class TestDaughter { public static void main(String[] args) { //把小的赋值给大的称为向上转型// Grandma grandma = new Daughter(); //把小的赋值给大的称为向上转型// Mom mom = new Daughter(); //把大的赋值给小的就称为向下类型转换// Daughter daughter = (Daughter) grandma; //把大的赋值给小的就称为向下类型转换// Daughter daughter2 = (Daughter) mom; //向下类型转换之前必须得先向上类型转换 //如果不向上类型转换,直接向下类型转换会报错 //ClassCastException类转换异常// Daughter daughter = (Daughter) new Grandma(); //因为Object是最大的类可以接收一切对象 Object obj = new Grandma(); Object obj2 = new Mom(); Object obj3 = new Daughter(); }}
3.实现抽象类、抽方法
//定义抽象类public abstract class Animal { public static final String RACE = "动物"; private String name; private Integer age; private String sex; /**抽象方法*/ public abstract void sleep(Integer time); public abstract String loveFoods(String foods); /**普通方法*/ public void run(){ System.out.println("跑"); } public void eat(){ System.out.println("吃"); } /**构造器*/ public Animal(String name, Integer age, String sex) { this.name = name; this.age = age; this.sex = sex; } public static String getRACE() { return RACE; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; }}
//定义抽象类子类public class AnimalImpl extends Animal { private String color; @Override public void sleep(Integer time) { System.out.println("睡眠"+time+"小时"); } @Override public String loveFoods(String foods) { return "喜欢吃"+foods; } /** * 构造器 * * @param name * @param age * @param sex */ public AnimalImpl(String name, Integer age, String sex,String color) { super(name, age, sex); this.color=color; }}
//抽类、抽象方法实现多态public class AnimalImplTest { public static void main(String[] args) {// 匿名对象类 Animal animal = new Animal("狗",2,"nan") { @Override public void sleep(Integer time) { } @Override public String loveFoods(String foods) { return null; } }; Animal animal1 = new AnimalImpl("猫",2,"女", "橘黄色"); animal.eat(); animal.run(); animal1.run(); animal1.eat(); animal1.loveFoods("鱼"); animal.loveFoods("肉"); String race = Animal.RACE; System.out.println(race); }
转载地址:https://blog.csdn.net/qq_52807480/article/details/119835273 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月15日 23时54分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【学习笔记】对vanilla的一些个人理解
2019-04-30
【解决错误】The size of tensor a (8) must match the size of tensor b (64) at non-singleton dimension 1
2019-04-30
word文档中实现目录索引中标题加粗,前导符和页码不加粗
2019-04-30
“学硕” VS “专硕”
2019-04-30
【NLP学习笔记】知识图谱阅读笔记及其心得
2019-04-30
【工具使用】新版CSDN-markdown编辑器使用指南
2019-04-30
《知识图谱》阅读笔记(六)
2019-04-30
【NLP学习笔记】中文分词(Word Segmentation,WS)
2019-04-30
【NLP学习笔记】词性标注(Part-of-speech Tagging, POS)
2019-04-30
《知识图谱》阅读笔记(七)
2019-04-30
《知识图谱》阅读笔记(九)
2019-04-30
【超越白皮书7】你需要知道关于ETH2.0的几个事实
2019-04-30
超越白皮书8:穿云而过的闪电网络
2019-04-30
AMM做市无常损失对冲分析系列(一)—— 损益及期权对冲模型构建
2019-04-30
JS中document对象和window对象有什么区别
2019-04-30
【python练习题】遍历1
2019-04-30
【matlab】显示图片且下方显示文字
2019-04-30
关于greater<int>以及类模板的一些理解
2019-04-30