标签:super 构造器 用户 引用 构造 扩展 关键字 方式 转型
继承
1、 什么是继承?
继承是使用已存在的类的定义作为基础建立新类的技术,该类的定义可以增加新的属性或新的方法,也可以用父类的功能,但不能选择性地继承父类。
2、 使用继承三项注意事项:
1> 子类拥有父类非private的属性和方法(private成员能被继承,但不能被访问)。
2> 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
3> 子类可以用自己的方式实现父类的方法(方法的重写(overriding))。
3、 三大特例
1> 构造器(构造方法)
对于构造器而言,它只能被调用,无法被继承。
调用父类的构造方法需要加上super()即可,在子类全参构造中参数列表需要写入子类属性和父类属性。
对于继承而言,子类会默认调用父类的构造器。但如果没有默认的父类构造器,子类必须要显示的指定父类的构造器,而且必须是在子类构造器中做第一件事(在第一行代码加上super())
2> Protected关键字
作用域:当前类、同一个包、子类。
对于protected而言,它指明就类用户而言,他是private,但是对于任何继承或者其他任何位于同一个包的类而言,他却是可以访问的。
将属性封装保持为private,通过protected方法来控制类的继承者的访问权限。
3> 向上转型 向下转型 (没有理解,需要找案例搞明白)
向上转型:子类引用的对象转换为父类类型(将子类对象转换为父类对象)。
作用:减少重复代码,父类为参数,调用时用子类作为参数,使代码变得简洁。
向上转型时,父类指向子类引用对象会遗失除了与父类对象共有的其他方法,即子类会遗失自己的新方法。
向下转型:父类引用的对象转换为子类类型(将父类对象转换为子类对象)。
注意:
@先有向上转型,后有向下转型
@父类引用可以指向子类对象,而子类引用则不能指向父类对象。
@向上转型不用强制转型
Father father=new Son();
@向下转型则必须要强制转型
Son son=(Son)father;
4、 慎用继承
既然继承有诸多好处,那么有没有缺点呢?
继承存在如下缺陷:
1> 父类变,子类就必须变。
2> 继承破坏了封装,对于父类而言,它的实现细节对于子类来说都是透明的。
3> 继承是一种强耦合关系。
使用继承的一般原则:
问自己是否需要从子类向父类进行向上转型?如果必须向上转型,则继承是必要的,但是如果不是不需要,则应当好好想想自己是否需要继承。
5、方法重写(overriding)
在形成继承的父子类中,子类拥有拥有父类的同名方法,并且参数相同,子类的方法会覆盖父类的同名方法。
标签:super 构造器 用户 引用 构造 扩展 关键字 方式 转型
原文地址:http://www.cnblogs.com/dopaer/p/6549659.html