Java基礎篇-----抽象類,接口及內部類

在這裏插入圖片描述一:抽象類

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:接口與接口:
			繼承關係,可以單繼承,也可以多繼承。

五.內部類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章