面向对象语言特征:
封装:1,包装,将常用的功能
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是
通过该类提供的方法来实现对隐藏信息的操作和访问 。
封装的好处 :
隐藏类的信息
通过特定的方法访问
方便加入控制语句
方便修改实现
通过 extends关键字,可以声明一个类继承另外一个类
当一个类没有显示的继承其他类时,默认继承Object类
继承性的细节
子类会继承父类所有的实例变量和实例方法
子类不能直接访问父类中私有的(private)的成员变量和方法
在Java 中,继承的关键字用的是“
extends”,表示子类是对父类的扩展
Java支持多层继承(继承体系)
一个父类可以同时拥有多个子类
Java只支持单继承,不支持多重继承
继承:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么,多个类中无需
再定义这些属性和行为,只需要和抽取出来的类构成继承关系
继承的好处 :
继承的出现减少了代码冗余,提高了代码的复用性。
继承的出现,更有利于功能的扩展。
继承的出现让类与类之间产生了is-a的关系,为多态的使用提供了前提。
方法的重写:
当父类的方法功能实现不能满足子类需求时,可以对方法进行重写
子类可以对从父类中继承来的方法进行改造,我在程序执行时,子类的方法
将覆盖父类的方法。们称为方法的重写也称为方法的覆盖。
注意:构造方法,静态方法不能重写,成员变量不存在重写
方法重写的规则
-
子类重写的方法必须和父类被重写的方法名称,参数列表相同。
-
子类重写的方法的返回值类型与父类保存一致。
-
子类重写的方法使用的访问权限不能小于父类被重写方法的访问权限。
注意:① 父类私有方法不能重写 ② 跨包的父类默认权限的方法也不能重写
-
子类方法抛出的异常不能大于父类被重写方法的异常
@Override重写标签,可删除;
super:调用父类中的方法
this:调用当前类型的方法
super在子类中使用时,访问父类中定义那部分成员,
每当创建子类对象,会调用子类的构造方法,在子类构造方法中,调用父类构造方法,子类构造方法第一行有super(),且父类构造方法优先.
子类构造方法中默认调用父类无参构造方法
super.成员变量
super. 成员方法
多态:注意事项:注意成员调用时,分为编译期间,运行期间
编译期间:写代码时;由于类型上升为父类,只能调用到父类的定义成员
运行期间:实际调用的为子类重写的方法
对非静态成员方法:编译看左边,运行看右边
对静态成员方法,成员变量:编译看左边,运行看左边
为了实现多态性,将子类类型上升到父类类型就调不动子类特有的方法(缺点);
解决方法:向下转型,将父类类型转为子类类型
final:关键字,可修饰方法,参数,成员变量final不可以修饰抽象类final修饰的类不可被继承
final修饰方法,修饰后子类不可以重写
final修饰方法的参数,参数不可改变
final修饰成员变量,定义时就必须直接赋值或者在构造方法中进行赋值,不能修改