java基础_day0022_java关键字_this_super_构造器_子类对象实例化

super 关键字 




调用 父类中和子类中 重名的 属性 和方法    调用父类的属性和方法  用super.关键字  调用子类中的属性和方法用this.


如果只有父类和子类中的属性或者方法不同名 则可以省略关键字 或者用this. 或者super.都可以。


如果 子类重写 父类的方法 之后   还想调用父类的方法,  直接用super.的形式去显示调用父类的方法,  直接写方法名或者 this.方法名的形式来调用重写父类之后的方法。






super(形参列表)形容构造器  也必须在构造器首行。  this(形参列表)


父类:

package day08_03;

public class Person {
	private int age;
	private String name;
	protected int id; //父类的id
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}


子类:


package day08_03;

/**
 * Worker 继承 Person 父类  有重复属性  id   
 * 
 * this.id 调用子类的id 属性  
 * super.id 调用父类的id 属性 
 * @author Administrator
 *
 */
public class Worker extends Person{
	private  int id; //子类的id
	private  String desc;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	public Worker() {
		super();
	}
	
	
	
	
	
	public  void eat(){
		this.id=123;
		super.id=555555;
	
		System.out.println(this.id+":"+super.id);
		
	}
	
	
	
	
	
	
}


测试类



 子类的实例化过程   
 
  在new 子类对象时  除了子类本身的属性外,  在调用子类的构造器时 ,默认调用suer()构造器 同时把父类的属性带入子类对象中。

package day08_03;


/**
 * 子类的实例化过程   
 * 
 * 在new 子类对象时  除了子类本身的属性外,  在调用子类的构造器时 ,默认调用suer()构造器 同时把父类的属性带入子类对象中。
 * 
 * @author Administrator
 *
 */
public class TestWorker {
	public static void main(String[] args) {
		Worker w = new Worker();
		w.eat();
		
	}
}



 子类对象的实例化过程
  当前类中的构造器中  如果有N个构造器 最多可以有N-1个   this(形参列表);语句来调用其他的构造器 【this语句必须在构造器的首行】。
  最后一个 无 this(形参列表); 的构造器       首行   默认有super(形参列表); 语句来调用其继承父类的构造器 ,
  利用父类的构造器 来加载父类具有的属性和方法,【由于有权修饰符限问题,有的属性和方法  子类能够加载 ,确无法调用  使用 】  当前类如果无显式继承的父类 那么继承其  顶级父类Object
 Object 类中通过API观察得知 只有 构造器   、方法  无具体属性 。      


package day08_05;


/**
 * 子类对象的实例化过程
 * 当前类中的构造器中  如果有N个构造器 最多可以有N-1个   this(形参列表);语句来调用其他的构造器 【this语句必须在构造器的首行】。
 * 最后一个 无 this(形参列表); 的构造器       首行   默认有super(形参列表); 语句来调用其继承父类的构造器 ,
 * 利用父类的构造器 来加载父类具有的属性和方法,【由于有权修饰符限问题,有的属性和方法  子类能够加载 ,确无法调用  使用 】  当前类如果无显式继承的父类 那么继承其顶级父类Object
 * Object 类中通过API观察得知 只有 构造器   、方法  无具体属性 。      
 * 
 * @author Administrator
 *
 */
public class TestDog {
	public static void main(String[] args) {
		Dog dog = new Dog();
//		调用当前dog对象的属性  +  继承父类的属性+ 父类的父类方法+ 顶级父类Object的 toString()方法
		System.out.println(dog.getAge()+"--"+dog.getHostName()+":"+dog.getName()+"\t"+dog.toString());
	}
}

class Creator{
	private  String name;

	public Creator() {
//		实例化当前对象时默认调用父类的空参构造器,默认继承object父类
//		super 修饰构造器 跟this关键字一样 必须放在构造器的首行。
		super();
		this.name="小花狗";
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
	
	
}


class Animal extends Creator{
	private int age;

	public Animal() {
		super();
		this.age = 5;
	}

	public Animal(int age) {
		super();
		this.age = age;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	
	
}

class  Dog extends  Animal{
	private String hostName;

	public Dog() {
		super(5);
		this.hostName="miss  ming";
	}

	public String getHostName() {
		return hostName;
	}

	public void setHostName(String hostName) {
		this.hostName = hostName;
	}
	
}




































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

prefectjava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值