JAVA筆記-接口

接口

一、接口是用來擴展方法的


二、接口的特點:

1.接口用關鍵字interface來表示

interface 接口名{}

2.類實現接口用implements關鍵字

class 類名 implements 接口名{}

3.接口不能被實例化,但是可以用多態的方式實例化(類似抽象類)
4.接口的子類

a:可以是抽象類,但是意義不大
b:可以是具體類,要重寫所有接口中抽象方法


三、接口成員特點

1.成員變量:只能是常量,且是靜態的

默認修飾符:public static final (建議手動給出)

2.構造方法:沒有構造方法
3.成員方法:所有成員方法都是抽象的

默認修飾符:public abstract (建議手動給出)


四、關係區別

    類與類:繼承,只能單繼承,不能多繼承,可以多層繼承
    類與接口:實現,可以單實現,也可以多實現,還可以繼承+多實現
class Son extends Father implements Sister,Brother{}
    接口與接口:繼承,可以單繼承,也可以多繼承
interface Sister extends Father,Mother{}


       五、老師學生實例:

/*
	老師和學生案例,加入抽菸的額外功能
	
	分析:從具體到抽象
		老師:姓名,年齡,喫飯,睡覺
		學生:姓名,年齡,喫飯,睡覺
		
		由於有共性功能,我們提取出一個父類,人類。
		
		人類:
			姓名,年齡
			喫飯();
			睡覺(){}
			
		抽菸的額外功能不是人或者老師,或者學生一開始就應該具備的,所以,我們把它定義爲接口
		
		抽菸接口。


		部分老師抽菸:實現抽菸接口
		部分學生抽菸:實現抽菸接口
		
	實現:從抽象到具體
		
	使用:具體
*/
//抽菸接口
interface Smoking{
	public abstract void smoke();
}


//人類
abstract class Person{
	private String name;
	private int age;
	
	public Person() {}
	public Person(String name,int age) {
		 this.name=name;
		 this.age=age;
	}
	
	public void sleep() {
		System.out.println("睡覺");
	}
	public abstract void eat() ;
	
	public void show() {
		System.out.println("姓名:"+name+" 年齡:"+age);
	}


}


//學生類
class Student extends Person{
	public Student() {}
	public Student(String name,int age) {
		super(name,age);
	}
	public void eat() {
		System.out.println("學生喫食堂");
	}
}


//老師類
class Teacher extends Person{
	public Teacher() {}
	public Teacher(String name,int age) {
		super(name,age);
	}
	public void eat() {
		System.out.println("老師回家喫");
	}
}


//抽菸學生
class SmokingStudent extends Student implements Smoking{
	public SmokingStudent() {}
	public SmokingStudent(String name,int age) {
		super(name,age);
	}
	public void smoke() {
		System.out.println("學生抽菸");
	}	
}


//抽菸老師
class SmokingTeacher extends Teacher implements Smoking{
	public SmokingTeacher() {}
	public SmokingTeacher(String name,int age) {
		super(name,age);
	}
	
	public void smoke() {
		System.out.println("老師抽菸");
	}	
}


class Test{
	public static void main(String[] args) {
		//創建抽菸學生對象並測試
		SmokingStudent ss=new SmokingStudent("林青霞",20);
		ss.show();
		ss.eat();
		ss.smoke();
		ss.sleep();
		System.out.println("-----------------");
		
		//創建抽菸老師對象並測試
		SmokingTeacher st=new SmokingTeacher("劉意",40);
		st.show();
		st.eat();
		st.smoke();
		st.sleep();
	}
}


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