超类 子类 java核心技术第五章

继承关系! 
以manager与employee为例子,在manager与employee之间存在明显的关系 - 每一个manager都是employee。即“ is-a ” 关系。这是继承关系的一个明显特征。
public class Manager extends Employee {
......
}
employee类被称为 子类,派生类或者孩子类,employee类被称为父类,基类或者超类。
子类继承了超类的方法,属性,子类相对于超类具有更加丰富的功能,但是也有不适应的地方,这就需要我们来添加新的东西,或者重写不适应的地方(覆盖); 


1 覆盖方法!

public class Employee {
	public String name; 
	public double salary; 
	public Address address; 
	public Employee(String name,double salary,Address address ) {
		this.name = name; 
		this.salary = salary; 
		this.address = address; 
	}
	public Employee(){}; 
	
	public double getSalary() {
		return salary; 
	}
}



public class Manager extends Employee {
	double bonus;
	public Manager( String name,double salary,Address address ) {
		super(name,salary,address); 
		bonus = 0 ; 
	}
	
	public double getSalary() {
		return salary+bonus;
	}
	public void setBonus(double b) {
		bonus = b; 
	}
}

在上面的这段代码中,getSalary() 是无法返回salary,因为manager的getSalary方法不能直接访问employee的私有域 。 即子类不能访问超类的私有域。但是我们可以借助super来访问超类的私有域
public class Manager extends Employee {
	double bonus;
	public Manager( String name,double salary,Address address ) {
		super(name,salary,address); 
		bonus = 0 ; 
	}
 	public double getSalary() {
		double baseSalary = super.getSalary() ; 
		baseSalary += bonus; return baseSalary; 	
	}
}


2 子类构造器


public Manager( String name,double salary,Address address ) {
		super(name,salary,address); 
		bonus = 0 ; 
	}


super是java中的一个特殊关键字,1可以作为超类的构造器使用,2 利用super来调用
如果子类的构造器没有显式的调用超类的构造器,则将会自动调用超类的默认构造器。


注意点:


Address alex_address = new Address("FushanDepartment","Qingdao","china"); 
	Employee alex = new Manager("alex",20000,alex_address); 
	System.out.println(jack.getSalary());


在上面的代码中,alex是一个employee类型的引用变量,但是它指向了manager对象,在调用的时候也会调用manager的getsalsry方法,这是因为java在运行时能够自动的选择调用哪一个。这种现象被称为动态绑定。


3  java支持多层的继承。不支持一个类同时继承多个类(可以利用接口实现)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值