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();
}
}