Java 8:继承1(动态绑定、抽象类、可见性)

类设计技巧:
1、保证数据私有化
2、对数据进行显式的初始化

3、不要过多使用基本数据类型(相关的基本数据可以封装成一个新的类)

4、将类职责进行分解

5、名字尽量体现类和方法的职责

继承
extends表示新类派生于一个已存在的类,已存在的类称为超类、父类,新类称为子类、派生类。
在子类中新添加的方法不属于父类,父类不能使用。
子类继承父类的所有域和方法

子类访问父类的私有域:
子类可以调用父类中的public方法来设置私有域,但是不能直接访问,也不能访问父类的private方法。 只有父类能直接访问
子类要访问必须借助公有的接口。
public double getSalary(){
   	//子类重写方法
	return 10+getSalary();	//调用父类接口获得父类私有域、名称错误
}
这里希望·调用父类的getSalary,需要加上 super.getSalary()

子类可以增加域、增加方法、覆盖方法,但是不能删除继承的域和方法


子类构造函数
子类执行构造函数时, 必须调用父类的一个构造器(一个,不是0或2)
可以使用super(param),显式地在子类构造函数中调用父类构造函数,显式调用父类的构造函数,这一句话必须放在子类构造函数的第一句。
不显式声明,则采用父类的默认构造函数

不能将父类对象赋给子类,反之可以(经理是雇员,但雇员不一定是经理)
Manager m=new Manager();
Employee e=new Employee();
Employee e2=new Manager();		
m.getSalary();
e.getSalary();
e2.getSalary();
这里Java能自动识别出,e2本身是Manager对象,调用子类的方法,而不是父类的
多态:一个变量对象可以可以指向多种实际类型
动态绑定:在运行时能够自动选择调用哪一种方法,
如果不希望哪一个方法被继承,可以设为final

Manager m=new Manager();
Employee e=new Manager();		
m.newfun();	//Manager对象执行子类中的新方法
e.newfun();	//错误,虽然e是一个Manager,但是赋给了Employee变量,只能执行声明类型Employee中存在的函数
这样也不行
Manager boss=new Manager();
Employee e=boss;		
boss.newfun();	//可以
e.newfun();	//不可以

虽然在这里类型正确,但是一般情况下不是所有雇员都是经理,编译错
Manager boss=new Manager();
Employee e=boss;		
Manager m;
m=boss;		//正确
m=e;		</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值