码迷,mamicode.com
首页 > 其他好文 > 详细

09 抽象类/接口

时间:2020-12-29 12:04:02      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:文件   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!