【Java基础】8.面向对象高级特征
类的继承:Java定义一个类,通过关键字extends继承一个已有的类,又叫泛化,Java只能单继承
父类(超类、基类)、 子类(派生类) 每个类只有一个直接父类,每个父类可以有多个子类
子类继承父类的所有属性和方法(构造方法除外),也可以增加自己的属性和方法
好处:编码更高效、易维护、代码重用
子类实例化,先实例化其父类,再实例其子类,子类实例化不仅调用本类的构造器,还要调用父类的构造器
super():调用父类构造器,该语句只能出现在子类构造器中,且必须是第一行
this():调用本类的构造器,只能写在第一行,super与this不能同时出现
包:包允许将类组合成较小的单元,有助于避免命名冲突、允许在更广的范围保护类、数据和方法
可以是类、接口和子包的集合
package语句为java源文件第一条语句
不同包下要用import引用才能使用
封装:使用访问权限修饰符对类的成员进行控制 public protected default private
目的:隐藏类的实现细节,限制对属性的不合理操作、便于修改、增强可维护性、进行数据检查
重写:对父类继承的方法进行重写
规则:必须与父类的方法名称、返回值类型、参数数量类型顺序相同
子类方法的权限修饰符不能小于父类的方法,只能抛出父类方法异常或异常的子类
引用数据类型转换:向上转型,子类转换为父类,自动转换,但会损失掉子类新扩展的属性和方法
向下转型,父类转换成子类,强制转型,只有曾经向上转换过的对象才可以向下转换
instanceof运算符:知道某个引用指向那种类型的对象,判断经过向上转型后的对象是哪一个子类的
多态:具有表现多种形态的能力的特征, 同一个实现接口,使用不同实例而执行不同操作
不同对象对同一行为做出的不同响应,只发生在非静态方法中
存在必要条件:有继承或实现,有重写,父类引用指向子类
表现形式:重写、重载
public class test{ public static void main(String[] args){ Shape s1=new Rectangle(10,20); Shape s2=new Circle(10); Shape s3=new Triangle(3,4,5); s1.show();//分别执行三个子类的show方法,不执行 s2.show();//父类的show方法,多态 s3.show(); } }
final关键字:可以修饰类,使之不能产生子类
修饰变量,使之不能被重新赋值
修饰方法,使之不能被子类覆盖、重写
抽象类:抽象方法与非抽象方法的集合 在类前面加上abstract
抽象方法:只有方法的声明,没有方法的实现
抽象类不能被实例化
抽象方法必须在子类中实现,否则子类也要声明为抽象类
抽象方法不能为静态的
接口:只包含常量和抽象方法,没有变量和方法的实现 常量默认public static final
对类来说是一套规范、行为协议,降低耦合性
接口不是类,不能被实例化,没有构造器 用interface关键字定义
接口可以继承
类实现接口用implements,这个类必须实现接口中的所有抽象方法,否则类要声明为抽象类
类可以实现多个接口 类的单继承多实现 接口可以多继承
内部类:定义在类里面的类 普通类的权限只有public friendly ,内部类有四种权限 不能定义static变量
内部类可以直接访问外部类的变量和方法,外部类不能直接访问内部类的变量和方法,要创建内部类的对象
只能被外部类调用,避免错误调用
静态内部类:static标识 不能访问外部类的非静态成员
非静态内部类只能定义非静态成员、静态内部类可以定义静态成员和费静态成员
局部内部类:在类的方法体或程序块中定义的内部类
只能访问外部类中的final类型的变量

浙公网安备 33010602011771号