Part II - 4 << Part II - 5 >> Part II - 6

抽象クラス


抽象クラスは「abstract」をつける。
そしてメソッドは宣言だけを行う。

【例】
abstract class Animal //abstractをつける
{
	abstract void Show();//抽象メソッド 実装するクラス次第
}

【プログラム例】
//--------- 抽象クラス ----------//
abstract class Animal //abstractをつける
{
	protected String name;
	
	abstract void Show();//抽象メソッド 実装するクラス次第
}


//--------- クラス ---------------//
class Dog extends Animal//抽象クラスの継承
{
	//コンストラクタ
	Dog(String str){
		name = str;
	}
	
	Dog(){
		name = "no name";
	}
	
	
	//メソッド
	void Show(){
		System.out.println("I'm Dog. My name is " + name);
	}
}


//----------- クラス -------------//
class Cat extends Animal//抽象クラスの継承
{
	
	//コンストラクタ
	Cat(String str){
		name = str;
	}
	
	Cat(){
		name = "no name";
	}
	
	
	//メソッド
	void Show(){
		System.out.println("I'm Cat. My name is " + name);
	}
}


//------------- メインクラス ---------------//
class CMain
{
	public static void main(String str[])
	{
		//抽象クラスを使ってオブジェクトの作成
		Animal animal[] = new Animal[2];
		animal[0] = new Dog("Max");
		animal[1] = new Cat();
		
		//表示する
		animal[0].Show();
		animal[1].Show();
		
		System.out.println("---- Program Finish .----");
	}
}

【メモ】
サブルーチンなどの関数をつくった時に関数をいくつもつくる必要がない。
引数に抽象クラスを設定すればいい。

instanceof どのインスタンスか?


抽象クラスでは「instansceof」を使う事でどのインスタンスを指しているかを識別できる。

【例】
//--------- 抽象クラス ----------//
abstract class Animal //abstractをつける
{
	protected String name;
	
	abstract void Show();//抽象メソッド 実装するクラス次第。中身は書かない
}


//--------- クラス ---------------//
class Dog extends Animal
{
	
	//コンストラクタ
	Dog(String str){
		name = str;
	}
	
	Dog(){
		name = "no name";
	}
	
	
	//メソッド
	void Show(){
		System.out.println("I'm Dog. My name is " + name);
	}
}


//----------- クラス -------------//
class Cat extends Animal
{
	
	//コンストラクタ
	Cat(String str){
		name = str;
	}
	
	Cat(){
		name = "no name";
	}
	
	
	//メソッド
	void Show(){
		System.out.println("I'm Cat. My name is " + name);
	}
}


//------------- メインクラス ---------------//
class CMain
{
	public static void main(String str[])
	{
		//抽象クラスを使ってオブジェクトの作成
		Animal animal[] = new Animal[2];
		animal[0] = new Dog("Max");
		animal[1] = new Cat();
		
		//表示する
		animal[0].Show();
		animal[1].Show();
		
		//インスタンスチェック
		for(int loop = 0; loop < animal.length;++loop){
		
			if(animal[loop] instanceof Dog){
				System.out.println(loop + " 番目のインスタンスは Dogです");
			}else{
				System.out.println(loop + " 番目のインスタンスは Dogではありません");
				
			}
			
		}
		
		
		System.out.println("---- Program Finish .----");
	}
}
  • twitter
  • livedoor クリップ
  • はてなブックマーク
  • delicious
  • Yahoo! ブックマーク
  • niftyブックマーク
  • Buzzurl

Wiki内検索

フリーエリア




Wikiをはじめる

マイページ