package com.neusoft.override;
/**
* super:可以調用父類中的資源
* 1. super.屬性名
* 2. super.方法名
* 3. super()表示調用父類中構造器
*
* 注意:如果子類繼承了父類,父類中定義了一個有參數的構造器,此時子類就找不到父類中無參數的構造器了。編譯器就會報錯
* 解決的方法:
* 1.在父類中創建一個無參數的構造器
* 2.在子類中也定義一個有參數的構造器並且在這個構造器中通過super(參數1,參數2)去調用父類中有參數的構造器
*
*/
import org.omg.CORBA.PUBLIC_MEMBER;
class D {
int i = 1;
public D(){//S1.父類構造無參數方法
}
public D(int a, String b) {//P2.父類本有參數
System.out.println("");
}
public void test_d() {
System.out.println("test_d ...");
}
}
class E extends D {
public E(int a, String b) {//P1.子類本無參數
super(a, b);//S2.子類構造有參函數,並在第一行用super(含參)
System.out.println("11111111111");
}
int i = 2;
public void test_e() {
super.test_d();
System.out.println("1");
}
}
public class SuperDemo {
public static void main(String[] args) {
E e = new E(1,"2");//11111111111
e.test_e();//test_d ... 1
}
}
package com.neusoft.animal;
import javax.xml.bind.SchemaOutputResolver;
public abstract class Animal {
private String name;
private int legNum;
public Animal() {
}
public Animal(String name, int legNum) {
// this.name = name;
// this.legNum = legNum; //初值,用get、set可以不寫
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLegNum() {
return legNum;
}
public void setLegNum(int legNum) {
this.legNum = legNum;
}
public abstract void shout();
}
package com.neusoft.animal;
public class Cat extends Animal{
public Cat(String name,int legNum){
super(name, legNum);
}
public void shout(){
System.out.println("miaomiao ... ");
}
}
package com.neusoft.animal;
public class Duck extends Animal {
public Duck(String name, int legNum) {
super(name, legNum);
}
public void shout() {
System.out.println("gaga ... ");
}
public static void main(String[] args) {
Animal animal1 = new Duck("tom", 2);
animal1.shout();
Animal animal2 = new Cat("tom123", 4);
animal2.shout();
}
}