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

本文探讨了在Java中如何使用`super`关键字进行父类资源的调用,包括父类构造器的调用。当子类继承父类且父类存在带参数的构造器时,子类需通过`super(参数)`调用父类构造器。通过示例代码展示了如何在子类构造器中使用`super`,并提供了Animal抽象类及其Cat和Duck子类的示例,说明了抽象方法的实现和`super`的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值