美文网首页
Java 面试系列:抽象类和接口的应用 + 面试题

Java 面试系列:抽象类和接口的应用 + 面试题

作者: you的日常 | 来源:发表于2021-02-10 12:24 被阅读0次

    抽象类

    定义

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。简单来说,使用关键字 abstract 修饰的类就叫做抽象类。

    抽象类使用

    示例代码,如下:

    abstract class AbstractAnimal {
        public AbstractAnimal() {
            System.out.println("Init AbstractAnimal.");
        }
        static String name = "AbstractAnimal";
        public abstract void eat();
        public void run() {
            System.out.println("AbstractAnimal Run.");
        }
    }
    class Animal extends AbstractAnimal {
        public static void main(String[] args) {
            AbstractAnimal animal = new Animal();
            animal.run();
            System.out.println(animal.name);
            animal.eat();
        }
      // 必须重写抽象父类方法
        @Override
        public void eat() {
            System.out.println("Animal Eat.");
        }
    }
    

    以上代码执行的结果:

    Init AbstractAnimal.
    AbstractAnimal Run.
    AbstractAnimal
    Animal Eat.
    

    抽象方法

    使用 abstract 关键字修饰的方法叫做抽象方法,抽象方法仅有声明没有方法体。如下代码:

    public abstract void m();
    

    抽象类的特性

    • 抽象类不能被初始化
    • 抽象类可以有构造方法
    • 抽象类的子类如果为普通类,则必须重写抽象类中的所有抽象方法
    • 抽象类中的方法可以是抽象方法或普通方法
    • 一个类中如果包含了一个抽象方法,这个类必须是抽象类
      -子类中的抽象方法不能与父类中的抽象方法同名
      -抽象方法不能为 private、static、final 等关键字修饰
      -抽象类中可以包含普通成员变量,访问类型可以任意指定,也可以使用静态变量(static)

    接口

    定义

    接口(interface)是抽象类的延伸,它允许一个类可以实现多个接口,弥补了抽象类不能多继承的缺陷,接口是对类的描述,使用 interface 关键字来声明。

    接口使用

    示例代码,如下:

    interface IAnimal {
        void run();
    }
    class AnimalImpl implements IAnimal {
        public static void main(String[] args) {
            IAnimal animal = new AnimalImpl();
            animal.run();
        }
        @Override
        public void run() {
            System.out.println("AnimalImpl Run.");
        }
    }
    

    Java 8 中接口的改动

    1)接口中增加了 default 方法和 static 方法,可以有方法体

    示例代码,如下:

    相关文章

      网友评论

          本文标题:Java 面试系列:抽象类和接口的应用 + 面试题

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