1 访问权限修饰符
- pubic
- protected
- default 就是什么都不写
- private
1.1 类
- 外部类只能被public以及default修饰
- 内部当定义在接口时,默认被且必须public static修饰
- 内部类定义在类内时,可以被所有修饰符修饰.
- 外部类与源文件同名时,必须要被public修饰.不与源文件同名相同的类不能被public修饰
自己的理解:
- 一个类可以被访问,就是说这个类是否可以在类外被实例化或者继承.
- 被public修饰的类可以在包内被实例化或继承,对于外部类来说,通过导包的方式可以在包外被实例化或是继承.
- 被default修饰的类可以在包内被实例化或继承,对于外部类,由于default的方式下无法通过导包的方式被调用,所以无法在包外被实例化继承.
- protected与private修饰的类,只能是内部类.
- 内部类被的访问权限可以参考类内属性.
1.2 接口
- 与类类似,外部接口只能被public与default修饰
- 接口定义在接口时,默认被且必须public static修饰
- 接口定义在类内时,可以被其他访问控制符修饰.
- 接口与源文件同名时,必须要被public修饰.不与源文件同名相同的接口不能被public修饰
自己的理解;
在访问控制上与类类似
1.3 变量
- 变量被定义在类内方法外时,称为该类的成员变量,被定义在方法或代码块时被称为局部变量.
- 局部变量无法被访问控制符修饰
- 变量被定义在接口时,默认且必修被public static final修饰.
自己的理解:
- 变量的访问,就是可以获得其值.
- 被public修饰的成员变量,可以通过该类的实例化对象或是继承类或是继承类的实例化对象访问.
- 被protected修饰的成员变量,在同一个包时可以被该类的实例化对象或是继承类或是继承类的实例化对象访问.在不同包时只能被继承类访问.
- 被default修饰的成员变量,可以被同包内的该类的实例化对象或是继承类或是继承类的实例化对象访问.
- 被private修饰的成员变量,只可以在该类内被访问.
1.4 方法
- 方法只能被定义在类内或接口内
自己的理解:
- 方法的访问,就是可以通过实例化对象或是类调用或是可以被继承
- 其访问控制与变量相同
2 static
2.1 类
- 只有内部类可以被static修饰.
- 实例化语法:外部类类名.内部类类名 变量名 = new 外部类类名.内部类类名().
2.2 接口
- 只有定义在类内或是接口内的接口可被static修饰
2.3 变量
- 只有成员变量可以被static修饰,当变量被static修饰时.其随着类加载时加载.被称为类的静态资源.可以通过类名.变量名的方式直接调用.
- 定义在接口内的变量,默认且必须被public static final修饰.
2.4 方法
- 方法被static修饰时,改方法会随着类加载而加载.
- 可以通过类名.方法名的方式调用.
- 静态方法不能使用类的非静态成员变量
2.5 代码块
- 写在方法外的代码块可以被static修饰.
- 静态代码块会在类加载时执行,并且只执行一次.
- 静态代码块不能使用类的非静态资源(静态变量,静态方法)
3 abstract
3.1 类
- 被abstract修饰的类,被称为抽象类.抽象类不能创建对象.
- 抽象类可以不包含抽象方法.
- 包含抽象方法的必然是抽象类.
- 继承抽象类的实现类必须重写抽象类的抽象方法.
3.2 接口
- 接口默认且必须被abstract修饰
- 实现接口的抽象类必须重写接口的抽象方法.
- 接口内的变量,默认且必须被public static final修饰.称为静态常量
- 接口内的方法,默认且必须被public abstract修饰.
3.3 方法
- 被abstract的方法被称为抽象方法.
- 抽象方法不能有方法体.
- 抽象方法不能被private修饰.
- 包含抽象方法的类一定是抽象类.
3.4 变量
- 变量不能被abstract修饰.