Java面向对象
继承
1、子类拥有父类非private属性和方法,还可以拥有自己的属性和方法。
2、子类可以用自己的方式实现父类的方法。
3、Java的继承是单继承、多重继承
4、提高了类之间的耦合性
继承可以使用extends和implements这两个关键字来实现继承,而且所有的类都是继承于java.lang.Object,当一个类没有继承的两个关键字,则默认继承Object类。
使用implements关键字可以变相使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口。
super关键字:通过super访问父类的成员变量,方法和构造方法
this关键字:指向自己的引用
重写
重写是子类对父类的允许访问的方法的实现过程进行重写编写,返回值和形参都不能改变。即外壳不变,核心重写。
重写方法不能抛出新的检查异常或者比被重写方法声明更加宽泛的的异常。
返回类型与被重写方法的返回类型可以不相同,但必须是父类返回值的派生类。
访问权限不能比父类中被重写的方法的访问权限更低。
重载
重载是在一个类里面,方法名相同,参数不同,返回类型可以相同。
多态
多态是同一个行为具有多个不同表现形式或形态的能力。
条件:继承、重写、父类引用指向子类对象。
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:消除类型之间的耦合关系,可替换性,可扩充性,接口性,灵活性和简化性。
class Animal{ void eat(){} } class Cat extends Animal{ void eat(){} } …… Animal a=new Cat(); a.eat();
抽象类
抽象类除了不能实例化对象之外,类的其它功能依然存在,包括构造方法。
抽象方法只是声明,不包含方法体。
构造方法和类方法不能声明为抽象方法。
抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
封装
指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装的优点:
1、良好的封装能够减少耦合
2、类内部的结构可以自由修改
3、可以对成员变量进行更精确的控制
4、隐藏信息,实现细节
实现封装:用private修饰属性,限制访问。其次提供public方法进行取值和赋值。
接口
在Java中,接口是一个抽象类型,是抽象方法的集合。
接口不是类,类描述对象的属性和方法,接口则包含类要实现的方法。
接口没有构造方法,接口中的所有方法必须是抽象方法。
接口不能包含成员变量,除了static和final变量。
接口不是被雷世纪初,而是要被类用implements实现。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口中的方法不能再接口中实现,只能由实现接口的类来实现接口中的方法
接口无法实例化。
接口中的变量会被隐式指定为public static final,方法会被隐式指定为public abstract。
接口不能有static方法。