close

0402java
繼承
1.
class EX8_13{
 public static void main(String [] args) {
  Animal[] a = new Animal[3];
  a[0] = new Animal(); a[1] = new Vertebrate(); a[2] = new Fish();

  for(int i=0; i   if(i==0)
  System.out.println("a[" + i + "]=" + a[i]);
 
 }
}

class Animal {int i=1;}

class Vertebrate extends Animal {}

class Fish extends Vertebrate {}


2.
class EX8_14 {
 public static void main(String [] args) {
  Fish 小紅 = new Fish();  //小紅是一條魚
  Animal 大黃 = new Animal(); //大黃是一隻動物
  System.out.println("小紅是魚類: " + (小紅 instanceof Fish));//T
  System.out.println("小紅是脊椎動物: " + (小紅 instanceof Vertebrate));//T
  System.out.println("小紅是動物: " + (小紅 instanceof Animal));//T

  System.out.println("大黃是脊椎動物: " + (大黃 instanceof Vertebrate));//F
  System.out.println("大黃是魚類: " + (大黃 instanceof Fish));//F
  System.out.println("大黃是動物: " + (大黃 instanceof Animal));//T
 }
}

class Animal {}

class Vertebrate extends Animal {}

class Fish extends Vertebrate {}

3.
class EX8_12 {
 public static void main(String [] args) {
  Fish a = new Fish();
  Vertebrate b = new Fish();
  Animal c = new Fish();
  //Fish d = new Vertebrate(); //錯誤
  //Vertebrate e = new Animal(); //錯誤

  System.out.println("a=" + a.i +a.j+a.k);
  System.out.println("b=" + b.i +b.j);
  System.out.println("c=" + c.i);
 }
}

class Animal {int i=1;}

class Vertebrate extends Animal {int j=2;}

class Fish extends Vertebrate {int k=3;}
4.
class ex08_29{
 public static void main(String arg[]){
  A b=new B();
  C c=new C();
  if (c instanceof A) System.out.println("T");//T
  if (b instanceof A) System.out.println("T");//T
 }
 }
class A{}
class B extends A{}
class C extends A{}

5.
//19
class A{}
class B extends A{}
class C extends A{}
class D extends  B{}
//x instanceof B && !(x instanceof D)

public class EX08_19{
 public static void main(String[] args){
  
  //19

  //20
  A a= new A();
  B b= new B();
  B x= new B();
  D d= new D();
  //
  if ((x instanceof B) && !(x instanceof D))
  System.out.println("T");//T
  System.out.println((x instanceof B) && !(x instanceof D));
 }
 
}

6.
class EX8_15{
 public static void main(String [] args) {
  Fish f = new Fish();
  Animal a = f;
  //Vertebrate v = a;  //錯誤
  Vertebrate v = (Vertebrate)a;
  Fish f2 = (Fish)a;
  
  //囧
  v=f2;//Ok
  //f2=v;
  f2=(Fish)v;
  //v=a;    
        v=(Vertebrate)a;    
       
  System.out.println("a=" + a);
  System.out.println("v=" + v);
  System.out.println("f2=" + f2);
 }
}

class Animal {}

class Vertebrate extends Animal {}

class Fish extends Vertebrate {}
7.
class EX8_19 {
 public static void main(String [] args) {
  Dog[] d = new Dog[3];
  d[0] = new WolfDog();
  d[1] = new Doberman();
  d[2] = new Dog();

  for(int i=0; i    d[i].bark();  //呼叫方法
 }
}

class Dog {
 void bark() { System.out.print("汪汪"); }
}

class WolfDog extends Dog {
 void bark() { System.out.println("汪~汪~嗚~"); }
}

class Doberman extends Dog {
 void bark() {
  super.bark(); //呼叫父類別定義的方法
  System.out.println("~汪汪汪~");
 }
}
8.
class EX8_17{
 public static void main(String [] args) {
  new WolfDog().bark(1); new Doberman().bark(2); new Dog().bark();
 }
}

class Dog {
 void bark() { System.out.print("汪汪"); }
}

class WolfDog extends Dog {
 void bark(int i) { System.out.println("汪~汪~嗚~"); }
}

class Doberman extends Dog {
 void bark(int i) {
  super.bark(); //呼叫父類別定義的方法
  System.out.println("~汪汪汪~");
 }
}
9.

public class EX08_15 extends B{ //
 void m1(){}
 void m2(){}
 public static void main(String args[]){
   new EX08_15();  
 }
}

abstract class A{
 abstract void m1();
 abstract void m2();
}

abstract class B extends A{
 void m1(int i){
    System.out.println(i); 
 }
}
10.
class EX08_13{
 public static void main(String args[]){
 
 A a = new B();
 a.m();
  
 }
}

abstract class A{
 int m=9;
 abstract void m(); //課本原本題目前面加上final會編譯錯誤修改後答案變C顯示m
}

class B extends A{
 void m(){
    System.out.println("m"); 
 }
}
11.

arrow
arrow
    全站熱搜

    凝輝 發表在 痞客邦 留言(0) 人氣()