JAVA プログラミング 入門

JAVAのプログラミングについて初歩から解説します。まずは、mainメソッド、変数、演算、if文、for文、while文、メソッド、配列など。続いて、メソッドを複数構成して、プログラムを作成(非オブジェクト指向プログラミング)、しばらく後になると思いますが、オブジェクト指向プログラミングを解説します。 クラスの構成、コンストラクター、継承、・・・、など、本格的OOP(Object Oriented Programming)を解説します。

Java: インタ-フェースと抽象クラス

クラスのようなものである。
インターフェースの形は以下のようになる。

interface インターフェース名{
型名 フィールド1= 式;
...
型名 フィールドm= 式;

戻り値の型 メソッド名1();
...
戻り値の型 メソッド名n();
}

フィールドはすべて(実質的に)public static final、つまり定数。メソッドはすべてpublic abstractと同じ。

interfaceはその実装クラスで実装して使う
class 実装クラス implements インターフェース名
{
}

実装クラス はinterfaceのフィールドとメソッドを受け継ぎ、メソッドはすべて定義しなければならない。

インターフェースのimplementsとは:
抽象クラスのメソッドをオーバーライドするのとほぼ同じ(別クラスに同じ名前で別機能のメソッドを持たせる)。
ただし、フィールドの値を変えることは不可。
複数のクラスを継承することはできないが
複数のinterfaceを実装することはできる。

class クラス名implements interface名,
interface名、・・・・interface名


抽象クラスとインターフェイス
類似点:
1)オブジェクトを作れない。
コンストラクターは書けるが、それ自身でオブジェクトは作れない
2)抽象クラスはサブクラスに、インターフェイスは実装クラスにメソッドの実装を要請する。

相違点:
1)インターフェイスはクラス階層のどのクラスにもくっ付くが、抽象クラスはクラス階層の一箇所に位置する。
2)抽象クラスは抽象メソッドが1以上。フィールドは定数でなくてもよい。インターフェイスは全てのメソッドが抽象メソッド、全てのフィールドが定数。
3)抽象クラスの抽象メソッドはpublicまたは protected。インターフェースのメソッドは全てabstract & public。


図Proo11_1_srcにプログラム例を示す。

f:id:Kurokawa_Tomio:20190707212009p:plain
図Proo11_1_src
1から4行 インターフェースの定義。二つの抽象メソッドが書かれている。
5から16行 実装クラスProBook
フィールドは全てprivate。
10から12行 sbook定義されている。これはコンストラクタで使われている。
13から15行 displayが実装されている。

17から27行 実装クラスTextBook
ProBookとほぼ同じになっている。

JAVA PROGRAMMING 入門 TOP へ

以下にソースを二つ示す。

interface scratch {
	void sbook(String title, int page);
	void display();
}
class ProBook implements scratch{
	private String title;private int page, category;
   public ProBook(String title, int page, int category){
		sbook(title,page);this.category=category;
   }
	public void  sbook(String title, int page){
		this.title=title;this.page=page;
	}
   public void display(){
		System.out.println(" [ProBook: "+title+","+page+","+category+"]");
	}
}
class TextBook implements  scratch{
	private String title;private int page,school;
   public TextBook(String title, int page, int school){
		sbook(title,page);this.school=school;
   }
	public void  sbook(String title, int page){
		this.title=title;this.page=page;
	}
   public void display(){
		System.out.println(" [TextBook: "+title+","+page+","+school+"]");
   }
}
public class Proo11_1{
   public static void main(String args[]){
		ProBook a; TextBook b;
		a=new ProBook("Introduction to C++",300,5);
		b=new TextBook("Beginner's Java",400,3);
		a.display();b.display();
   }
}
// [ProBook: Introduction to C++,300,5]
// [TextBook: Beginner's Java,400,3]