继承
1.为什么要有继承?
java是面向对象的编程语言,是类构成了java语言,而继承又是java必不可少的,继承就是当写一个类时,虽然这个类满足了某些功能但是又想拓展它的功能,此时就可以使用继承机制在写一个该类的子类,来完成需要的功能,一旦子类继承了父类就拥有了父类的方法与域(除私有方法和私有域),在子类中也可以重写父类的方法,覆盖父类中同名的方法,定义与父类相同的域,隐藏父类同名的域,实现子类需要的功能。 继承的优点是提高了代码的效率,避免了代码重写。
2.继承概念层的主要关系:
1) 类A -> 类B (两者是层级关系) 例如:动物(A) - > 猫(B)
2) 类B继承类A,类B派生于类A,类B扩展于类A。
3. 继承的主要语法
1)父类是没有任何语法要求
2)子类和父类的使用,java通过extends来明确继承关系:
子类 extends 父类{
}
3)每个类都有且仅有一个类
class A{}
例如以上代码没有标明继承自哪一个类,隐含继承自java.lang.Object(Object是所有类的祖先类,没有任何属性)。
4)访问权限
如果父类的属性,方法权限是
private:子类是没有权限使用;
什么都不写(包访问权限):如果子类和父类是同一个包下的类,就有权限使用;
protected:子类+父类是同一包下的类,有权限使用
public: 子类有权限使用;
所以访问权限是:public > protected > 什么都不写 > private
5)重载与重写
重载,从简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法。
重写,是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重点:
子类对象实例化之前,必须在子类的构造方法中调用父类的构造方法
通过super{...}调用当父类有无参构造方法时,super()可以省略
通过super可以明确访问父类中的属性和方法(有访问权限的前提下)
当没有名称歧义时,直接通过this也可以
子类有的权限:
子类可以定义新的方法,与父类中的方法实现重载关系子类可以定义和父类中方法签名完全一致的方法(备注),进行方法的重写 @Override注解



