読者です 読者をやめる 読者になる 読者になる

Javaの継承とインターフェイス

端的にいうと継承はフィールド変数を含む全てを引き継ぐが、一つの子に対して一つの親がいる関係。一方、インターフェイスはフィールド変数は含まず、操作(アルゴリズム)だけを抽象化したもので、複数インターフェイスを実装出来る。

継承のサンプル(TeleVideo.java, Television.java, TelevisionMain.java)

//TeleVideo.java
public class TeleVideo extends Television{
	int recordChannel;
	public void record(){
		System.out.println(channel+"チャンネルの番組を録画します。");
		recordChannel = channel;
	}

	public void play(){
		System.out.println("録画した"+recordChannel+
				"チャンネルの番組を再生します。");
	}
}
//Television.java
public class Television {
	int channel;
	public void display(){
		System.out.println(channel+"チャンネルの番組が流れます。");
	}

	public void setChannel(int channel){
		this.channel = channel;
		System.out.println(channel+"チャンネルに変えました。");
	}
}
//TelevisionMain.java
public class TelevisionMain {
	public static void main(String[] args) {
		TeleVideo teleVideo1 = new TeleVideo();
		teleVideo1.setChannel(11);
		teleVideo1.display();

		teleVideo1.record();
		teleVideo1.play();
	}
}

インターフェイスのサンプル(Human.java, Student.java, StudentMain.java, Study.java)

//Human.java
public interface Human {
	public void talk();
	public void walk();
	public void run();
}

//Student.java
public class Student implements Human, Study {
	public void talk(){
		System.out.println("話しています");
	}

	public void walk(){
		System.out.println("歩いています");
	}

	public void run(){
		System.out.println("走っています。");
	}

	public void study(){
		System.out.println("勉強しています。");
	}
}
//Student.main.java
public class StudentMain {
	public static void main(String[] args) {
		Student student = new Student();
		student.talk();
		student.study();
	}
}
//Study.java
public interface Study {
	public void study();
}