大龄屌丝自学笔记Java零基础到菜鸟019

抽象类,接口,类、接口关系,抽象类与接口的区别

1、抽象类

抽象方法:只有方法体的方法,用于定义抽象的、非具体的功能,如 abstract void eat(); 。

抽象类:abstract class,可以包含抽象方法的类(抽象类不一定包含抽象方法,包含抽象方法的类一定是抽象类),如:abstract class Animal{} 。

抽象类的特点:抽象类既可以包含抽象方法,也可以包含非抽象方法。

       抽象类有构造函数,但不能被实例化。构造函数用于子类访问父类数据的初始化。

       抽象类的子类是抽象类,该子类不需要重写抽象方法。

       抽象类的子类是非抽象类,该子类必须重写全部抽象方法(实例化)。

 1 abstract class Animal{
 2     public abstract void sleep();
 3 }
 4 
 5 class Cat extends Animal{
 6      public void sleep(){
 7         System.out.println("小猫睡觉");
 8     }
 9 }
10 
11 class Fin{
12     public static void main(String[] args){
13         Animal ani=new Cat();
14         ani.sleep();
15     }
16 }

注意事项:抽象类与 private、final 关键字冲突,static 关键字无意义。

2、接口

接口:interface,用于定义方法而不实现方法的引用类型(其他的类和接口可以实现接口),如:interface ITrain{} 。

接口的特点:接口的实现用 implement 关键字,如:class ITrainImpl implement ITrain{} 。

      接口是抽象的不能实例化。通过子类实例化。

      接口的子类可以是抽象类,但是抽象类实现接口无意义。

      接口的子类是非抽象类,该子类必须重写全部抽象方法(实例化)。

      接口中只能包含抽象方法,不能包含非抽象方法,默认修饰符public。

      接口中的变量,默认是常量。

      接口没有构造函数。

注意事项:类实现接口的本质是:类 extends Object implement 接口{} 。

     Object类,是所有类层次结构的根类,所有类都使用Object类作为超类,是所有对象(包扩数组)都实现这个类的方法。

3、类、接口关系

类与类的关系:继承关系,只能单继承,可以多层继承。

接口与接口的关系:实现关系,可以多实现,可以多层实现。

类与接口的关系:继承关系,可以多继承,可以多层继承。

4、抽象类与接口的区别

成员区别:抽象类,常量、抽象方法、变量、非抽象方法,有构造函数。

     接口,常量、抽象方法,没有构造函数。

关系区别:抽象类,类只能单继承

     接口,接口可以多继承/实现

理念区别:抽象类,被继承体现的是抽象出的共性的关系,如:猫(类)是动物(抽象类)。

     接口,被实现的是扩展出的扩展功能,如:猫(类)会卖萌(接口)。

原文地址:https://www.cnblogs.com/liverpool/p/4817417.html