您的位置:首页 > 编程语言 > Java开发

Java 面向对象:继承,构造器参数super()

2018-03-29 21:37 309 查看
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();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐