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
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
}
}
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.
留言列表