09 抽象类/接口

标签:文件   ati   int()   无法   成员变量   并且   使用   代码块   strong   

抽象类 abstract

  • 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样,构造方法,类方法不能声明为抽象方法。

  • 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类

  • 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法

  • 抽象类必须被继承,才能被使用。

  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口。


抽象类和普通类的区别:

  • 抽象方法必须为 public 或者 protected(因为如果为 private,则不能被子类继承,子类便无法实现该方法),默认情况下默认为 public。
  • 抽象类不能new对象;
  • 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为 abstract 类。
public abstract class Employee
{   
   public abstract double computePay();
}

接口 interface

  • 接口中的变量会被隐式地指定为 public static final 变量(并且只能是 public static final变量),而方法会被隐式地指定为 public abstract 方法且只能是 public abstract 方法,并
  • 接口中的方法必须都是抽象方法
  • 接口不能被实例化没有构造方法。是一种极度抽象的类型,它比抽象类更加"抽象",并且一般情况下不在接口中定义变量。
  • 一个接口能继承另一个接口,这和类之间的继承比较相似。

抽象类和接口的区别:

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

  2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

  3. 接口中不能含有静态代码块以及静态方法,而抽象类可以。

  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

:JDK 1.8 以后,接口里可以有静态方法和方法体了。*

/* 文件名 : Animal.java */
//接口
interface Animal {
   public void eat();
   public void travel();
}

/* 文件名 : MammalInt.java */
//实现接口
public class MammalInt implements Animal{
 
   public void eat(){
      System.out.println("Mammal eats");
   }
 
   public void travel(){
      System.out.println("Mammal travels");
   } 
 
   public int noOfLegs(){
      return 0;
   }
 
   public static void main(String args[]){
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
}
//结果:
//Mammal eats
//Mammal travels

09 抽象类/接口

标签:文件   ati   int()   无法   成员变量   并且   使用   代码块   strong   

原文地址:https://www.cnblogs.com/wu-myblog/p/14182852.html

版权声明:完美者 发表于 2020-12-29 12:04:02。
转载请注明:09 抽象类/接口 | 完美导航

暂无评论

暂无评论...