day08

多态的好处:

    1、提高了程序的维护性(由继承保证)
    2、提高了程序的扩展性(由多态保证)

向下转型

public static void main(String[] args) {
        Fu1 f1 = new Zi1();
        f1.fun1();
//        f1.show1();
        //向下转型
        //格式: 子类类名 变量名 = (子类类名)要转型的变量名;
        Zi1 z1 = (Zi1)f1;
        z1.show1();
        //并不是任意两个类型之间都可以做向下转型,只有实际内存对象类型与要转的类型一样

接口

接口:表示一个类的额外功能的实现
    java提供了一个关键字表示接口:interface
    接口我们可以将它看作成一个特殊的类, 因为接口也会被编译成一个class文件

    接口注意事项:
        1. 接口中只能存在抽象方法, jvm默认会在方法前使用public abstract进行修饰, 刚学java推荐加上
        2. 类和接口是实现关系 可以通过关键字implements实现接口
        3. 当一个具体的类实现一个接口的时候, 必须要实现接口中所有的抽象方法
        4. 若一个抽象类实现一个接口的时候,可以选择性地实现接口中的抽象方法
        5. 一个类可以同时实现多个接口,使用逗号隔开
        6. 接口和接口存在继承关系, 并且一个接口可以同时继承多个接口
        7. 接口中只能定义常量, 默认修饰符为public static final
        8. 接口无法实例化, 接口中不能出现构造方法

   面试题:
        java中允许多继承吗?
        答:
            若是类和类之间的继承,只能单继承,不能多继承
            若是接口与接口之间的继承,可以多继承

abstract关键字

java为了表示现实生活中抽象的概念集合,提供了一个关键字给我们使用:abstract
    abstract 抽象的
    可以修饰类,修饰成员方法

    1. 被abstract修饰的类是抽象类, 抽象类不能被实例化
    2. 被abstract修饰的方法是抽象方法, 抽象方法不能有大括号实现
    3. 在抽象类,既可以存在具体实现的方法, 也可以存在抽象方法
    4. 若一个类中有抽象方法, 这个类一定是一个抽象类
    5. 当一个具体的类继承一个抽象类, 必须要实现抽象类中的所有抽象方法
    6. 当一个抽象类继承一个抽象类的时候, 可以选择性地是否重写抽象方法

抽象类与类中成员的关系:

    成员变量: 抽象类既可以存在变量, 也可以存在常量
    构造方法: 可以存在构造方法, 是为了将来在继承关系做初始化的作用
    成员方法: 既可以是具体的实现方法, 也可以是抽象方法

思考

1. 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义? 可以表示一种概念的集合
2. abstract不能和哪些关键字共存
        final 不能共存
        static 不能共存
        private 不能共存
posted @   先瞄准再开枪  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示