为什么需要使用继承?
在过去的程度代码中,存在大量的重复代码,造成程序代码冗余。
解决方案: 使用继承
概念:(类似生活中的继承)
将共同的代码提取出来放到一个单独的类中,让原来的类继承这个新的类,但是需要满足一个条件。
is-a ,注意:在继承过程中一个类同时只能继承一个类,但是可以间接的去继承。
哪些内容是不能被继承的?
私有化的内容是不可以被继承的。
不同包下的使用默认修饰符修饰的内容也是不能被继承的。
构造方法是不能被继承。
构造方法的执行顺序
在有子父类的情况下,创建对象(子类)中,如果在子类的构造方法中没有写调用父类的构造方法的话,会默认调用父类的无参构造方法。
在子类够造方法中如果没有明式调用父类构造方法的话,则默认调用父类的无参构造方法。
在子类构造方法中如果写了调用父类的具体某个构造方法的话,则就根据代码调用。
super:
使用在子父类关系中,调用父类中的属性,方法和构造方法 当在调用构造方法的时候,需要在第一行。
方法的重写
定义:
发生在子父类中,方法名相同,参数列表相同,返回值相同或者是其子类,访问修饰符不能严于父类,抛出的异常 范围不能大于父类。
简单来说,你在子类中编写的方法从父类复制过来就肯定没错。
abstract
抽象的,可以修饰方法和类。
抽象方法没有方法体,抽象方法一定要再抽象类中,但是抽象类中不一定要有抽象方法。
抽象方法需要被子类都继承实现,如果子类没有重写父类中的抽象方法的话则这个类也需要是抽象类,其方法再由 其子类重写。
抽象类是不可以创建对象。