首页 > 代码库 > java 继承

java 继承

继承

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)

在形成继承的父子类中,子类拥有拥有父类的同名方法,并且参数相同,子类的方法会覆盖父类的同名方法。

java 继承