类的访问控制级别有两种:public
与默认级别(声明时不带修饰符)
public
修饰的类),公共类必须保存在与类同名的文件中,且拓展名必须为java
。一个Java源文件只能包含一个公共类(与源文件名称相同),但是可以包含多个非公共类。类成员包括但不限于方法、字段、构造方法,类成员可以具有以下四种访问控制级别之一:public
、protected
、private
、默认级别(不带修饰符)
访问级别 | 其他包的类 | 同包的类 | 子类 | 同类 |
---|---|---|---|---|
public | 是 | 是 | 是 | 是 |
protected | 否 | 是 | 是 | 是 |
默认 | 否 | 是 | 否 | 是 |
private | 否 | 否 | 否 | 是 |
this
指引用当前代码的对象
类字段和局部变量可以使用final
修饰,被final
修饰的变量或字段无法更改其值。
也可以将一个方法定义为final
,防止方法在子类中被覆盖。
我们可以使用import
来导入其他包,例如:
package ye; //import语句必须位于package语句后 import java.time.Clock; //导入java.time的Clock类 import java.util.* //导入java.util的所有类
静态成员即不需要先实例化类即可调用的类成员,类的静态成员不会与一个类实例绑定,我们可以在没有实例的情况下使用它们,例如作为类入口点的main方法就是静态的,因为必须在没有创建任何对象之前调用他。我们可以使用static
来声明静态成员:
public static int a;
静态成员的具体特点可以参考下面的例子:
public class StaticTest{ //方法sum1与sum2均为求和方法 public static int sum1(int... nums){ //sum1使用static修饰,为静态成员 int sum = 0; for (int num: nums) { sum += num; } return sum; } public int sum2(int... nums){ //sum2未使用static修饰 int sum = 0; for (int num: nums) { sum += num; } return sum; } public static void main(String[] args){ int res1 = sum1(100, 8080); //sum1方法可以直接调用 StaticTest obj = new StaticTest(); //sum2调用时应先创建一个对象 int res2 = obj.sum2(100, 8080); //在创建的对象中才能调用sum2方法 System.out.println(res1); System.out.println(res2); } }
当我们需要导入类的静态成员时,可以使用import static
语法来导入类中的静态成员,这样调用导入的的静态字段时就不需要再使用类名:
import static java.util.Calendar.MONDAY; //导入java.util.Calendar类中的静态字段MONDAY public class Monday { public static void main(String[] args){ System.out.println(MONDAY); //不需要使用类名 } }