Static
语法:static 数据类型 变量名
使用static修饰的属性我们认为是类的属性,不带static修饰的属性我们认为是对象的属性
访问Static变量:
第一种方式:类名.类属性(推荐使用)
第二种方式:对象实例.类属性
应用:
我们把常量一般定义成static,或者当前类创建的每一个对象都有相同的属性也可以把这种属性定义成static的
生命周期:
- 对象属性生命周期
创建对象的时候初始化对象属性 - 类属性的生命周期:
当.class文件被载入内存时类属性就初始化了,放在jvm方法区,jvm关闭类属性就消失了
修饰在方法上:
public static 返回值(void) 方法名(数据类型1 变量1,数据类型2 变量2,….){
方法体
[return 结果]
}
static修饰在方法上就是类方法
类方法的访问:
第一种方式:类名.类方法()推荐使用
第二种方式:对象实例.类方法()
类方法不需要创建对象即可使用,只需要类加载即可。
由于没有对象实例化,故不可访问对象属性
final
-
final修饰的方法不能被复写
-
称最终变量,不能被改动赋值
-
使用final来修饰的类是不可以被继承的。
abtract
- 抽象方法
当多个具体的实体类存在着共同的行为,但是有不同的表现,我们在父类继承过程中父类的方法具体实现不同确定,但是能确定的是他们都有这种行为。
我们要把这种行为方法作为抽象方法
public abtract [返回值][void] 方法名 (参数列表); 没有方法体
如果在一个类中存在一个抽象方法,那么这个类一定是抽象类
这个类上也要有abstract标识
抽象类:
abstract class 类名{
属性
方法
}
抽象类中可以没有抽象方法,但是有抽象方法的类一定是抽象类
- 抽象类不能被实例化
- 抽象类必须被子类继承才能使用子类实例化
- 继承了抽象类的非抽象类必须实现抽象类的所有抽象方法
- 抽象类也可以继承抽象类
- 抽象类的抽象方法不能和private,final, static共存,因为该方法是一定要被子类实现才能使用的
interface
与抽象类的区别
-
接口的所有方法(可以添加static、final)都是抽象的,抽象类里面的方法可以是抽象的也可以是不抽象的
-
接口和抽象类都不能实例化
-
抽象类只能单继承,接口可以多继承与多实现
-
接口中的属性是static final类型的,抽象类中的属性跟普通类中的属性没有区别
多态
多态就是行为具有表现多种功能的能力
我们通常使用抽象类来抽象要使用多态的方法,继承指的是多个类实现同一个接口或抽象类,但各自做了不同的实现,发挥着不同的作用
特点:
1.必须要有继承关系,在抽象类中可以定义多态的抽象方法,通过子类来继承这个抽象类然后复写抽象类中的抽象方法以达到多态的效果。
2.多态子类的实例可以赋给父类的引用
3.我们可以通过instanceof来判断当前父类的引用的实例是什么类型