• Java抽象类与接口


    1.抽象类

      抽象类表示抽象程度比较高而无法直接通过new来创建实例的类,抽象类使用abstract修饰。抽象类可以包含普通的属性和方法,还可以包含抽象方法(当然也可以不包含)。

      抽象方法使用abstract修饰,没有方法体,方法声明结尾是分号,抽象方法的具体实现留在子类中。

    public abstract class  AbstractClass
    {
        private int value;
    
        public void method()
       {
          System.out.println(value);
       }
    
       public abstact void setValue();      //抽象方法
    }

      子类继承抽象类后,可以实现抽象方法,也可以不实现。如果子类中包含抽象方法,则该子类也要声明为abstract类。也就是说如果子类继承自抽象类,并且子类不想再成为抽象类,则子类必须实现抽象父类中的所有抽象方法,即使某些方法子类用不上。

      父类不是一个抽象类,子类也可以添加新的抽象方法而成为抽象类。

      虽然抽象类不能直接new实例对象,但抽象类仍然可以作为类型而声明一个对象。

    abstract class Parent
    {
        private String name;
    
        public abstract void setName();
    }
    
    class Child extends Parent
    {
        public void setName()
       {
          name = "Child";
       }
    }
    
    public class Test
    {
         public static void main(String[] args)
         {
             Parent  parent = new Child();        // 声明一个Parent类型的变量
             parent.setName();
         }
    }

      2. 接口

      接口是一种比抽象类更加抽象也更加灵活的类型,接口也不能直接new实例对象,并且接口中只能包含常量和抽象方法。

    public interface  MyInterface
    {
        method();
    }

      和抽象类一样,虽然不能直接new接口实例对象,但接口也是可以作为类型来声明对象。

      接口中的所有属性都默认使用public final static来修饰,接口中的所有方法都默认使用public abstract来修饰,在接口中就可以省去这些修饰符。

      子类使用implements关键字表示实现某个接口,在子类中必须实现接口中的所有方法,即使某些方法用不上。

      3. 抽象类与接口的区别

      接口比抽象类更加抽象,只能包含常量和抽象方法。抽象类可以包含普通属性和普通方法;

      接口比抽象类灵活,一个类可以实现多个接口,但一个类最多只能继承自一个抽象类 ,Java中使用接口来实现多继承的功能;

      子类与抽象父类的关联性更强,是"is-a"的关系,子类与接口之间的关联性较弱,是"is-kind-of"的关系。

    参考资料 《Java核心技术》

  • 相关阅读:
    大数据(7)
    大数据(6)
    大数据(5)
    大数据(4)
    头发护理 -- 生发养发
    Sublime 中 SFTP插件的使用
    大数据(3)
    Apache Spark源码走读之5 -- DStream处理的容错性分析
    Apache Spark源码走读之4 -- DStream实时流数据处理
    Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
  • 原文地址:https://www.cnblogs.com/jqctop1/p/4668828.html
Copyright © 2020-2023  润新知