子类构造方法的定义

子类构造方法的定义可以分为以下几种:

                 1、若父类没有显式定义构造方法,则子类可以定义也可以不定义构造方法,构造子类对象时会通过子类的构造方法来调用父类默认的构造方法。

                 2、若父类显式定义了无参数的构造方法,则子类可以定义也可以不定义构造方法,构造子类对象时会通过子类的构造方法调用父类定义的无参数的构造方法。

                 3、若父类仅定义了带参数的构造方法,则子类必须定义构造方法,并且必须在子类构造方法的第一行显式地(通过super)调用超类的构造方法,

                     尤其是当超类重载构    造方法时,必须为super()提供合适的参数。

                     如果在子类构造方法中没有通过super显式地调用超类构造方法,这时并不是不调用超类的构造方法,而是隐式地调用超类无参数的构造方法。在这种情况下,

              若果超 类没有无参数的构造方法,则将导致编译错误。

例如:

//定义父类Person类
class Person{
	public String name;
	protected int age;
	static int IDnumber;
	boolean sex;
	private String IDcard;
	//定义带参数构造方法
	Person(String name)
	{
		this.name=name;
		System.out.println("创建了一个Person对象");
	}
	public void setIDcard(String s){IDcard=s;}
	public String getIDcard(){return IDcard;}
	void eat(){
		System.out.println(name+"今年"+age+"岁"+"喜欢吃中餐");
	}
	//定义静态方法
	public static void getnumber(){
		IDnumber=IDnumber+1;
		System.out.println("调用Person类的方法,已经创建了"+IDnumber+"个Person对象");
	}
}
//定义子类
class Student extends Person
{
	Student(String name) {
		super(name);
		System.out.println("创建了一个Student对象");
		// TODO Auto-generated constructor stub
	}
	public String name;
	static int IDnumber;
	private String IDcard;
	//定义实例方法
	public void setIDcard(String s){IDcard=s;}
	public String getIDcard(){return IDcard;}
	//定义静态方法
	public static void getnumber()
	{
		IDnumber=IDnumber+1;
		System.out.println("调用Student类的方法,已经创建了"+IDnumber+"个Student对象");
	}
}

 

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值