2018-3-23
Final关键字:
类不想被继承,或者类中的部分方法是固定的,不想让子类重写,可是当子类继承了这些特殊类之后,就可以对其中的方法进行重写,解决这种问题就用到final,意思为最终,不可变。Final是个修饰符,可以用来修饰类类的成员变量,以及局部变量。
特点:
1)是最终类,不能有子类,也不能被继承
2)使用方法,方式,没有变化,创建对象,调用方法
3)final修饰的方法不可以被覆盖,但父类中没有被final修饰方法,子类覆盖可以加final
4)final修饰的变量叫常量这些变量只能被赋值一次,final修饰引用变量,变量保存的内存地址终身不变。
5)final修饰的成员变量固定的不是内存的默认值,而是手动赋的
成员变量赋值:
1)直接=赋值
2)采用构造方法赋值
3)不能用set方法赋值,set方法创建对象之后的时候不能用final修饰的成员变量赋值
Static关键字:
对象的静态的特有的静态数据static修饰
被static修饰的成员,可以被类的名字直接调用变成共享的
Static注意事项:
1)静态方法不能调用非静态(生命周期:静态优先于非静态存在于内存中)静态是提前进入内存,非静态的后进入内存
2)静态中不能写this/super
Static的使用场景:
1. 可以修饰成员变量,成员方法(没有固定)需要根据具体问题分析:定义事物的时候,多个事物之间是否有共性的数据,可以将共性的数据定义为static
2. 成员方法加static,根据成员变量是否为静态
多态调用中编译:
编译都看=左边的父类,父类有编译成功,父类没有编译失败
运行时,静态方法。运行的是父类中的静态方法,
非静态方法,运行子类的重写方法
成员变量,编译运行全是父类
对象的多态性,静态和对象无关,父类的引用,静态方法
定义静态常量:
Public static final 修饰的变量来完成定义
Public static final 数据类型 变量名 = 值
注意:
接口中的每个成员变量默认使用的都是public static final 修饰
所有接口中的成员变量已经是静态常量,由于接口没有构造方法,所以必须显示赋值,可以直接用接口名访问。
固定不变的:表示常量名需要全部大写:
Public static final String COMPANY_NAME=”公司名称”
匿名对象:
概念:创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量。
创建一个匿名对象:
New Person()
1)没有引用变量,只能被调用一次
2)匿名对象可以当作参数传递
内部类:
概念:在一个类的内部又重新定义一个类,可以写在其他类的成员位置和局部位置,其他类称为外部类。
什么时候使用内部类?
在描述事物时,若一个事物内部还包含其他可能包含的事物。描述汽车时,发动机,发动机就可以用内部类描述。
内部类的分类:
成员内部类与局部内部类
成员内部类:可以使用成员修饰符,public, static...也是一个类,可以继承,可以实现接口
内部类编译后也是class文件
调用规则:
内部类可以使用外部类的成员变量,包括私有,外部类要调用内部类的成员必须建立内部类对象。
调用外部类中的内部类的方法:
格式:外部类名 . 内部类名 变量= new 外部类对象(). new内部类对象();
局部内部类:
概念:定义在外部类方法中的局部位置,与访问方法中的局部变量相似,可以通过调用方法进行访问
定义格式:
Class 外部类{
修饰符 返回值类型 方法名(参数){
Class 内部类{
//其他代码
}
}
}
访问方式:
在外部类方法中创建内部类对象,进行访问。
匿名内部类: