封装:
方法:
方法列子
public static void main(String[] args){
【return;】
}
访问权限修饰:
封装
将一组逻辑相关的属性方封装在类中,通过访问权限修饰符来隐藏内部细节,公开访问的接口的技术成为类的封装技术
列子
}
单列模式
class Police{
private Police(){
}
private static Police police=new Police();
public static Police GetInstance(){
retun police;
}
}
继承
继承与构造器
原则:子类在创键对象是有义务先完成父类对象的构造。
纯在继承关系时,创键子类对象会先调用父类的无参构造器在调用子类的构造器,
若不存在父类默认无参构造器则会则会报错,或通过suer关键字显示的调用父类的其他构造器。
super调用父类构造器时只能在子类构造器的第一行。
This关键字==>当前实例
当前对像的属性,当前对象的方法,当前对象的构造方法。
Super关键字==>父类实例
父类对象的属性,父类对象的方法,父类对象的构造器。“权限允许”
方法覆盖
在继承关系中
同名,同参,同返回值
不可缩小访问权限修饰符
Protected关键字
方法,构造器,同包以及子类中可以访问。
Final
属性:当创键时必须赋值,之后不可以在更改赋值,(“基本数据类型”,“引用数据类型=>不可以只想其他对象,内部属性可变”)
方法:final方法不可以被子类覆写。
类:final的类不可被继承。
抽象
抽象类:不可被实例化,可以再定义抽象方法(方法用abstract修饰,不能有实现)
含有抽象方法的类,必须是抽象类
多态
含义:对外是一种表现,对内有多种表现形式。
多态的具体表现
表现:方法重载,方法覆盖,多态参数
运行期类型和编译器类型
编译期类型和运行期类型相同
A a= new A()
a.show();
声明A的时候,使用到类型A表示对象类型,被称为编译期类型。
在编译期,虚拟机认为a的是类型是A,对于a所使用的属性和方法和方法的有效性将到类A中去验证。
构造方法A()中的A是运行期类型。
在运行期,将执行运行期类型中的方法
当有继承关系是,可能发生编译期类型和运行期类型不同的情况,即编译期类型是父类类型,运行期类型是子类类型。
A类是B类的父类
A ab=new B();
ab.show();
对象ab的编译期类型为父类A类。
运行期类型为子类B类。
如果一个引用的编译期类型和运行期类型不同,那么一定是编译类型与运行类型有父类子类关系,或者接口与实现的关系。
ab对象使用的方法,在编译期到类A中校验,而运行则执行B类的方法
如果一个对象的编译期类型是父类,运行期类型是子类,可以对该对象进行将值类型转换,将编译期类型转换为与运行期类型相同的类,即 B b=(B)ab;