27. 抽象クラス
27. 抽象クラス
オーバーライドの強制
lesson 065
class Lesson065 { public static void main(String args[]) { super_class obj = new CCS(); obj.write(); obj = new LOVE_HINA(); obj.write(); } } abstract class super_class { void write() { } } class LOVE_HINA extends super_class{ void write() { System.out.println("LOVE HINA"); } } class CCS extends super_class { void write() { System.out.println("Card Captor Sakura"); } }
実行結果
L:\>java Lesson065
Card Captor Sakura
LOVE HINA
abstractメソッド
lesson 066
class Lesson066 { public static void main(String args[]) { super_class obj = new CCS(); obj.write(); obj = new LOVE_HINA(); obj.write(); } } abstract class super_class { abstract void write(); } class LOVE_HINA extends super_class{ void write() { System.out.println("LOVE HINA"); } } class CCS extends super_class { void write() { System.out.println("Card Captor Sakura"); } }
実行結果
L:\>java Lesson066
Card Captor Sakura
LOVE HINA
オーバーライドの禁止 (finalクラス)
lesson 067
class Lesson067 { public static void main(String args[]) { super_class obj = new sub_class(); } } final class super_class { String name; } class sub_class extends super_class { int age; }
コンパイル結果
L:\>javac lesson067.java
lesson067.java:11: final super_class からは継承できません。
class sub_class extends super_class {
^
エラー 1 個
オーバーライドの禁止 (finalメソッド)
lesson 068
class Lesson068 { public static void main(String args[]) { super_class obj = new sub_class(); } } class super_class { final void write() { System.out.println("kitty on yoru lap"); } } class sub_class extends super_class { void write() { System.out.println("Card Captor Sakura"); } }
コンパイル結果
L:\>javac lesson068.java
lesson068.java:14: sub_class の write() は super_class の write() をオーバーライドできません。オーバーライドされたメソッドは final です。
void write() {
^
エラー 1 個