[Java] 抽象类和接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java] 抽象类和接口相关的知识,希望对你有一定的参考价值。

目录

  1. 抽象类
  2. 接口

1抽象类

定义

如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来实例化的类,我们称它为抽象类。

抽象类的特点

  • 抽象类不能被实例化,但可以引用子类对象。
  • 子类必须实现抽象类的抽象方法。如果子类也是抽象类,可以不实现抽象类的方法。
  • 抽象类中可以包含具体的方法,也可以包含抽象的方法。
  • 子类中的抽象方法不能与父类的抽象方法同名。
  • abstract 不能与final 并列修饰同一个类。
  • abstract 不能与private、static、final、或native并列修饰一个方法。

示例

public abstract class Test{
    // 属性
    public int var = 0;
    
    //抽象方法
    public abstract void hello();
    
    //具体方法
    public void hello2{
        System.out.println("Hello2");
    }
    
}

 

2 接口

定义

  1. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
  2. 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
  3. 接口无法被实例化,但是可以被实现。抽象类可以继承接口但不实现接口中的类。
  4. 接口类型可以用来声明一个变量。作为一个引用。
  5. 接口描述的是一个具体的对象的局部。

接口特性

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式地被指定为public abstract(只能是public abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式地被指定为public static final 变量(并且只能是public,用private修饰会便会报错)
  • 接口中的方法不能在接口中实现,只能由实现该接口的类来实现接口中的方法。

示例

public interface Test{
    // 属性
    public static final int var = 1;
    // 方法
    public void hello(); // 隐式定义为public abstract
}

 

抽象类和接口的区别

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的。
  3. 接口中不能包含静态代码块以及静态方法,而抽象类是可以有静态代码块和静态方法的。
  4. 一个类只能继承一个抽象类,而一个类可以实现多个接口。

 

参考:

http://www.runoob.com/java/java-interfaces.html

以上是关于[Java] 抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记—抽象类和接口

Java基础:抽象类和接口

Java抽象类和接口

Java基础5:抽象类和接口

Java抽象类和接口4000+字深度剖析

java中抽象类和接口的异同点