Java修饰符

Java修饰符

Java修饰符主要分为:

  1. 访问类修饰符;
  2. 非访问类修饰符;

修饰符一般放在语句的最前端,用来定义类、变量或者方法;

访问控制修饰符

访问控制符来保护类、变量、方法的访问,Java支持以下四种:

  • default(默认)在同一个包内可见,不适用任何修饰符,使用对象:类、接口、方法、变量;
  • private:在同一个类内可见。使用对象为变量、方法。注意不能修饰外部类;
  • public:对所有类可见。使用对象为变量、类、接口、方法;
  • protected:对同一包内的类和子类可见。使用对象为变量、方法。注意不能修饰外部类;

如下:

修饰符 当前类 同一包内访问 子孙类(同一包) 子孙类(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y N N
default Y Y Y N N
private Y N  N N N

 

 

 

 

 

私有访问修饰符private

私有访问是最严格的访问级别,被私有声明的方法、变量及构造方法只能被所属类访问,并且类、接口不能声明为private;

声明为私有变量只能通过类公共方法getter方法被外部类访问。

所以private主要用来隐藏类的实现细节,和保护类的数据;

复制代码
1 public class Logger {
2    private String format;
3    public String getFormat() {
4       return this.format;
5    }
6    public void setFormat(String format) {
7       this.format = format;
8    }
9 }
复制代码

该类有的私有变量format能够通过getFormat()方法来获取,也能通过setFormat()方法来设置。

公有访问修饰符public

public修饰的类、方法、构造方法、接口能够被任何其他类访问。

Java程序忠的main()方法必须用public修饰符修饰。

非访问修饰符

static修饰符:用来修饰类方法和类变量;

final修饰符:用来修饰类、变量、方法。final修饰的类不能被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,不允许修改;

abstract修饰符:用来创建抽象类、抽象方法;

synchronized和volatile修饰符:主要用户线程编程;

static修饰符:

 静态变量:static修饰的对象变量为静态变量,无论实例化多少对象,变量只有一个拷贝,静态变量也就是类变量。局部变量不能声明为static变量;

静态方法:静态方法不能使用类的非静态方法。

例:

复制代码
 1 public class InstanceCounter {
 2     private static int numinstances = 0;
 3     protected static int getCount(){
 4         return numinstances;
 5     }
 6     private static void addInstances(){
 7         numinstances ++;
 8     }
 9     InstanceCounter(){
10         InstanceCounter.addInstances();
11     }
12     public static void main(String[] args){
13         System.out.println("Starting with " + InstanceCounter.getCount() +" instance");
14         for (int i=0; i<500; i++){
15             new InstanceCounter();
16             System.out.println(InstanceCounter.getCount() + " instance");
17         }
18         System.out.println("created "+InstanceCounter.getCount()+" instances" );
19     }
20 }
复制代码

final修饰符

final表示最后的,最终的, 变量一旦赋值后就不能改变;

1 public class Test {
2     final int value = 10;
3     public static final int BOXWIDTH = 6;
4     static final String TITLE = "Manger";
5     public void changeValue(){
6         value = 12;//赋值将报错
7     }
8 }

 

posted @   H年轻的心  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示