美文网首页
Java 接口与抽象类

Java 接口与抽象类

作者: Tinyspot | 来源:发表于2022-07-27 22:19 被阅读0次

    1.抽象类

    abstract 修饰类为抽象类,抽象类对象无法独立存在,即不能 new 对象

    抽象类的作用:

    1. 可被子类继承,提供共性属性和方法
    2. 可声明为引用,更自然的使用多态

    抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类
    子类继承抽象类后,必须重写父类中所有的抽象方法,否则子类还是抽象类

    public abstract class Animal {
        public Animal() {
        }
        public abstract void eat();
        public void run() {
            System.out.println("...");
        }
    }
    
    public class Dog extends Animal {
        @Override
        public void eat() {
        }
    }
    

    2. 接口

    接口相当于特殊的抽象类,定义方式、组成部分与抽象类类似
    没有构造方法,不能创建对象
    只能定义:公开静态常量、公开抽象方法

    2.1 接口的概念

    微观概念:接口是一种能力
    接口的定义:代表某种能力
    方法的定义:能力的具体要求

    宏观概念:接口是一种标准

    接口的规范:

    1. 任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类
      常用:由抽象类来实现接口,不必重写接口的方法;可以全部不重写或只重写一部分方法
    2. 实现接口中的抽象方法时,访问修饰符必须是 public

    接口引用:
    接口也可以声明为引用,并指向实现类对象

    2.2 常量接口、标记接口

    常量接口

    public interface ConstInterface {
        String MONDAY = "Monday";
        String SUNDAY = "Sunday";
    }
    // demo
    String day = ConstInterface.MONDAY;
    

    标记接口中不包含任何成员,仅仅用作标记

    public interface Serializable {
    }
    public interface Cloneable {
    }
    

    2.3 接口回调

    接口回调:先有接口的使用者,后有接口的实现者

    3. 接口 VS 抽象类

    • 共同点:都不能被实例化
    • 抽象类是模版式设计,接口是契约式设计
    • 接口
      • 方法默认是 public abstract(可省略)
      • 属性默认是 public static final(可省略)
      • can-do 关系
    • 抽象类
      • is-a 关系 (is 不是'是',属于)

    4. 常见关系

    类与类:单继承 extends Parent
    类与接口:多实现 implements Interface1, Interface2 ... interface n
    接口与接口:多继承 extends interface1, interface2 ... interface n

    相关文章

      网友评论

          本文标题:Java 接口与抽象类

          本文链接:https://www.haomeiwen.com/subject/xybmvrtx.html