标签:文件 ati int() 无法 成员变量 并且 使用 代码块 strong
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样,构造方法,类方法不能声明为抽象方法。
抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法
抽象类必须被继承,才能被使用。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
抽象类和普通类的区别:
- 抽象方法必须为 public 或者 protected(因为如果为 private,则不能被子类继承,子类便无法实现该方法),默认情况下默认为 public。
- 抽象类不能new对象;
- 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为 abstract 类。
public abstract class Employee
{
public abstract double computePay();
}
- 接口中的变量会被隐式地指定为 public static final 变量(并且只能是 public static final变量),而方法会被隐式地指定为 public abstract 方法且只能是 public abstract 方法,并
- 接口中的方法必须都是抽象方法
- 接口不能被实例化,没有构造方法。是一种极度抽象的类型,它比抽象类更加"抽象",并且一般情况下不在接口中定义变量。
- 一个接口能继承另一个接口,这和类之间的继承比较相似。
抽象类和接口的区别:
抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
接口中不能含有静态代码块以及静态方法,而抽象类可以。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
注: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
标签:文件 ati int() 无法 成员变量 并且 使用 代码块 strong
原文地址:https://www.cnblogs.com/wu-myblog/p/14182852.html