一、static
1. static修饰的属性称为类属性:
class St{
int x;//成员属性 只有通过对象才能访问 如果不实例化对象将没有成员变量
//成员属性属于对象 每一个对象都有自己独立的一份
static int y; //类属性
//类属性属于类 一个类只有一份,所有的对象共享
}
类属性 可以 直接通过 类名.属性名 进行访问
当然也可以通过对象.属性名 进行访问
局部变量不能声明为static
2. static修饰的方法称为类方法
类方法中没有隐含的this引用变量
不能直接访问成员变量 和 调用成员方法
只能访问类属性 和 调用 类方法
成员方法中有this引用变量,this引用变量引用正在调用该方法的对象
能够访问到该对象的成员属性 和 调用成员方法
也能够访问类属性 和 调用 类方法
类属性 和 类方法 是所有的对象共享的(only one)
new对象时:
普通语句块 -> 构造方法
3. static语句块
static{//静态语句块 只会执行一次 最开始执行的
//作用:一般用于加载图片、视频、等资源
}
静态语句块是在类加载时被调用 肯定是等于所有语句块和构造方法先执行
类加载时是一行一行代码加载
new子类对象: 执行过程
父类的静态语句块->子类的静态语句块->父类的语句块->父类的构造方法->子类的语句块->子类的构造方法
二、final
1. final修饰的变量的值不能改变
final int x = 10;
x = 20;//Error
final int y;
y = 10;
2. final修饰成员变量
只能选择以下初始化的方式:
1.直接初始化
2.语句块中初始化
3.构造方法中初始化
只能在其中之一,不能同时
3. final修饰方法 不能被子类重写
4. final修饰的类 不能被继承 断子绝孙类
5. final和static一起修饰变量称为 常量 一般用大写字母表示
只能选择 直接初始化 或者 在静态语句块中初始化
在编译之后,会直接用 值 来替换 常量 提高运行效率
普通的变量 得去内存中取值 才能使用
三、抽象方法 抽象类
abstract修饰的方法为抽象方法
可以没有方法体(方法只需要声明不需要实现)
拥有抽象方法的类称为抽象类(用abstract修饰的类)
抽象类 不能 实例化对象
象类可以有成员属性
抽象类可以有构造方法
抽象类中可以有普通的成员方法
抽象类的意义:
1.提供一个公共的基类 子类对象都是父类类型的对象
2.提供了统一的调用接口(抽象方法) 子类重写该方法
3.封装子类共同拥有的属性和方法
四、接口
interface
interface 接口名{
//没有成员属性
//只能声明常量 和 抽象方法
int x;//默认是 static final
void show(); //默认是 public abstract
}
JAVA中的类的继承是单一继承 一个儿子只会有一个爸
但是,一个类可以实现多个接口