java中类的继承
所有牛逼的背后,都是苦行僧搬的自律.
一:为什么要有继承
满足类与类之间的联系,实现类的多态.
二:格式
superclass与subclass之间用extends关键字即可,superclass称为父类,基类,被扩展类,subclass称之为子类,扩展类.
三:子类的继承性
1.Java不支持多重继承
一个java子类只能有一个父类,不支持多重继承.
2.子类会调用父类的无参构造方法,如存在参数,必须在子类的构造方法的第一行用super来调用,否则报错
3 . 子类和父类在同一个包中的继承性
子类自然而然继承了父类中非private的方法和成员变量.否则报错,见下图.
继承的成员变量和方法的权限保持不变.
-
子类和父类不在同一个包中的继承性
子类自然而然继承了父类中非private和友好访问权限的方法和成员变量,也就是说子类只会继父类中的protect和public访问权限的成员变量和方法.否则报错,见下图.
继承的成员变量和方法的权限保持不变.
四:成员变量的隐藏与方法重写
1.成员变量的隐藏
若声明的成员变量与父类中成员变量的名字相同(类型可以不同),这种情况下子类会隐藏父类成员变量(见下图),但是子类对象依旧可以调用从父类继承的方法操作隐藏的成员变量(见下图)
2 . 方法重写
如果子类可以继承父类的某个实例方法,那么子类就有权利重写父类的方法.具体是子类的类型与父类的方法一致或者是父类方法的类型的子类型(具体是指方法的名字,参数的个数,参数的类型完全相同),子类方法的返回值与父类相同或者是父类的子类,子类声明抛出的异常小于等于父类抛出的异常,子类的访问权限比父类大或者相等.
五:super关键字
1.用super操作被隐藏的成员变量和方法2.用super操作父类的构造方法
见子类的继承性第二条
3.一张图理解super
五:对象的上转型对象
1.上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法
2.上转型对象可以访问子类继承或者隐藏的成员变量,也可以调用子类继承的方法或者子类重写的实例方法
3.如果子类重写了父类的静态方法,那么子类的上转型对象不能调用子类重写的静态方法,只能调用父类的静态方法.
4.不可以将父类创建对象的引用赋值给子类声明的对象.
六:final关键字
1.用final修饰的类,不能有子类.一般把下面的几个类设置为final类
- 某类不是专门为继承而设计
- 出于安全考虑,类的实现细节不允许被改动,不允许修改源代码
- 确信该类不会被扩展.
2.用final修饰的方法,不能被重写
- 构造方法不能被final修饰,因为构造方法不能被继承,肯定是最终的
- 出于安全考虑,类的实现细节不允许被改动,不允许修改源代码
- 确信该类不会被扩展.
3.用final修饰的变量叫做常量,只能赋值一次
- 局部变量只能被final修饰
- 被final修饰的变量必须初始化
- 确信该类不会被扩展.
- 补充:常量的命名规范,大写,中间用下划线链接