Java修饰符

访问控制修饰符

  • default: 在同一包内可见,不使用任何修饰符。
  • private: 同一类内可见。注意:不能修饰类
  • public: 对所有类可见。
  • protected: 对同一包内的类和所有子类可见。

类存在就是为了继承,更好的实例化成对象,如果设置成private和protected那这个类存在的意义也就没有那么大了。然后对于某些类中的方法、变量,我们不想被外部类直接访问,可以通过设置private和protected(非同一包内)修饰符来阻止访问,使得外部类仅能通过通过该类中提供的方法,如set(),get()方法来访问变量,实现类中变量的封装。
接口中的变量都隐式声明为 public static final,接口里的方法默认情况下访问权限为 public
因为接口中的方法是需要靠继承的子类去实现的,如果设置成不允许访问,也就无法实现。

  • private: 最严格的访问级别,被其修饰的方法、变量只能被所属类访问。
  • protected: 让子类都能访问,其他类不能访问。

父类中声明为 public 的方法在子类中也必须为 public

父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。(要能传下去(能被继承),不能到了一个子类中就被私有化了)

父类中声明为 private 的方法,不能够被继承。

非访问控制修饰符

  • final :
    -final 修饰符通常和 static 修饰符一起使用来创建类常量
    -父类方法可以被继承,不能被重写(overwrite)

  • abstract:
    -抽象类不能被实例化,声明抽象类的目的是为了进行通过子类继承来对该类进行扩充。
    -类包含抽象方法,一定要声明为抽象类

    抽象类

    abstract class Animal {
    	private String name;
    	public abstract void eat(); //抽象方法
    	public abstract void walk();
    }
    

    抽象方法:没有方法体,由子类实现。继承抽象类的子类必须实现父类所有的抽象方法,除非该子类也是抽象类。

  • synchronize
    synchronize声明的方法同一时间只能被一个线程所访问。

  • transient //易变的
    序列化时JVM跳过该特定的变量

public transient int limit = 22; //不会持久化
public int b; // 持久化
  • volatile
    volatile修饰的变量被线程访问时强制从共享内存中重新读取值,当成员变量发生变化时,强制线程将变化值回写到共享内存中。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
public class MyRunnable implements Runnable {
	private volatile boolean active;
	public void run(){
		active = true;
		while(active) {
		
		}
	}
	// 其他线程调用stop()后,前一个线程调用的run()中的循环会停止
	public void stop(){
		active = false;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值