• 10 | 多态


    1 多态

    同一个引用类型,因为实例不同,表现的形式不同

    2 抽象类

    在某些情况下,引用类型是一个抽象的概念,那么这样的类型,我们可以把他定义为抽象类

    • 语法:在class前加关键字abstract,用于表示当前类为抽象类
    • 注意:

    在抽象类当中,可以有普通方法,也可以有抽象方法,但是,抽象方法只能在抽象类当中声明;
    抽象类除了多了抽象方法和不能被实例化之外,和普通类一致;
    抽象方法的语法,在修饰符和返回值之间,添加关键字abstract,抽象方法没有方法体,即不需要立即实现 ;
    没有抽象的属性;
    抽象类,不可被实例化;
    抽象方法必须在子类当中被实现,除非子类也是抽象类,也就是说,在抽象的类的子类当中,只要有一个子类实现了抽象方法,其后代不必一定实现该抽象方法;
    对于一个子类来说,其父类当中所有的抽象方法,如果没有被实现过,那么将都需要去实现这些抽象方法;

    • 向上转型:父类声明指向子类对象

    向上转型,父类声明,只能调用子类重写的方法,或者本身实现没有被子类重写的方法;
    多个子类实现同一个重写的方法,优先调用距离实现类最近的那个;
    向上转型,子类特有的方法,无法被调用 ;
    向上转型属于自动类型转换。

    • 向下转型,强制将父类型变为子类型

    首先要向上转型过了,才能向下转型;
    向下转型之前,一定要判断实例的类型,要强转为那个引用,就判断是否是这个引用;
    向下转型属于强制类型转换。

    3 接口

    3.1 语法

    • 使用interface来声明;
    • 所有的方法,都是抽象的方法,不存在普通的方法;
    • 抽象方法,只能使用共有的和默认的,两种修饰符。因为,如果是私有的,那么除了本类之外,不可见;如果是受保护的,要继承可见,那么问题,就是否可见;
    //定义接口
    public interface Locl{
    	private void  up1(); //上锁,私有的会报错
    	protected  void up(); //上锁,保护的会报错
    	public void  down(); //落锁,共有的	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 接口当中,所有的属性多是静态常量
    • 接口可以多实现,用逗号隔开多个接口,但是继承只能是单根继承
    public class FangDaoMen  extends  Door implements Lock,MaoYan{
    }
    
    • 1
    • 2
    • 接口同样不可以被实例化 ;
    • 接口和接口之间是多继承 ;
    • 所有接口当中的抽象方法,都必须被实现类实现;
    • instanceof判断是否是某个类型,看实现类,而不是看声明类型 ;
    • 接口没有构造,抽象类,有构造;枚举对资源的消耗,是非常大的。

    4 设计模式

    4.1 单例模式

    工厂模式:帮助生产具体接口或者抽象类的实现类

    类图:
    在这里插入图片描述

    4.1.1 类名

    接口在类名之上有<接口>
    抽象类斜体
    普通类是正楷

    4.1.2 属性

    前面+号,共有
    前面-号,私有
    属性名:属性类型

    4.1.3 方法

    斜体是抽象方法
    正楷是普通方法
    参数,方法名(in/out 参数名:参数类型):返回值
    前面+号,共有
    前面-号,私有

    4.1.4 继承

    实线

    4.1.5 实现

    虚线

  • 相关阅读:
    React 窗口防抖_ 提升网页性能的利器
    Java面试——锁
    解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题
    shell编程之find/which/whereis/locate
    全景描绘云原生技术图谱,首个《云原生应用引擎技术发展白皮书》发布
    智能优化算法期末复习(更新ing)
    Compare线刷包与卡刷包
    git命令行分支(增删改查)
    门票赠送:诚邀您参加2023百度世界大会-大模型驱动产业发展论坛
    Stable Diffusion WebUI中COMMANDLINE_ARGS参数配置说明
  • 原文地址:https://blog.csdn.net/u013916029/article/details/126258064