一:抽象類
public abstract class Person {
public abstract void eat();
public abstract void sleep();
public void playGame(){
System.out.println("打遊戲");
}
}
public class Teacher extends Person {
@Override
public void eat() {
System.out.println("老師愛喝粥");
}
@Override
public void sleep() {
System.out.println("老師愛早睡");
}
}
public class Student extends Person {
@Override
public void eat() {
System.out.println("學生愛吃火鍋");
}
@Override
public void sleep() {
System.out.println("學生愛晚睡");
}
}
public class Test {
public static void main(String[] args) {
Person p=new Teacher();
p.eat();
p.sleep();
p.playGame();
p=new Student();
p.eat();
p.sleep();
p.playGame();
}
}
運行結果:
老師愛喝粥
老師愛早睡
打遊戲
學生愛吃火鍋
學生愛晚睡
打遊戲
Process finished with exit code 0
註釋:抽象類中既可以有抽象的方法,也可以有非抽象方法;抽象類的子類要麼也是抽象類,要麼重寫父類中的所有抽象方法。
二:接口
接口用interface表示,表類與接口的實現關係用implement
public abstract class Person {
public abstract void eat();
public abstract void sleep();
}
public class Teacher extends Person implements MyInterface{
@Override
public void eat() {
System.out.println("老師愛喝粥");
}
@Override
public void sleep() {
System.out.println("老師愛早睡");
}
@Override
public void speakEnglish() {
System.out.println("老師會說英語");
}
}
public class Student extends Person {
@Override
public void eat() {
System.out.println("學生愛吃火鍋");
}
@Override
public void sleep() {
System.out.println("學生愛睡懶覺");
}
}
public interface MyInterface {
public abstract void speakEnglish();
}
public class Test {
public static void main(String[] args) {
Teacher teacher=new Teacher();
Person p=teacher;
p.eat();
p.sleep();
MyInterface myInterface=teacher;
myInterface.speakEnglish();
p=new Student();
p.eat();
p.sleep();
}
}
運行結果:
老師愛喝粥
老師愛早睡
老師會說英語
學生愛吃火鍋
學生愛睡懶覺
Process finished with exit code 0
註釋:接口中只能有抽象方法
三:接口和抽象類的區別
A:成員區別
抽象類:
成員變量:可以變量,也可以常量
構造方法:有
成員方法:可以抽象,也可以非抽象
接口:
成員變量:只可以常量
成員方法:只可以抽象
B:關係區別
類與類
繼承,單繼承
類與接口
實現,單實現,多實現
接口與接口
繼承,單繼承,多繼承
C:設計理念區別
抽象類 被繼承體現的是:”is a”的關係。 抽象類中定義的是該繼承體系的共性功能。
接口 被實現體現的是:”like a”的關係
四.類與類,類與接口,接口與接口的關係
a:類與類:
繼承關係,只能單繼承,可以多層繼承。
b:類與接口:
實現關係,可以單實現,也可以多實現。
並且還可以在繼承一個類的同時實現多個接口。
c:接口與接口:
繼承關係,可以單繼承,也可以多繼承。
五.內部類