Java中的常用修饰符的作用

常用修饰符

Java中修饰符有abstract(抽象的)、static(静态的)、public(公开的)、protected(受保护的)、private(私有的)、final(不可变的),每个修饰符修饰的内容是不同的

访问控制修饰符public、protected、private

该类修饰是控制访问权限的,他们主要修饰成员方法、构造方法和成员变量,其中public可以修饰类
方法控制一共分为四个级别

  • 公开级别:public:对外公开,几乎项目里的任何类中都可以访问
  • 受保护级别:protected:对子类和同一个包里的类公开。
  • 默认级别:没有任何访问控制修饰符:对同一个包里的类公开,对不是一个包的子类不公开。
  • 私有级别:用private修饰,对外不公开,只要类本身可以访问。
    这个很容易理解,可以自己试试。我这里举个例子演示一下
package mypack1;
public class test1{
public int var1;
protected int var2;
private int var3;
int var4;
test1 t1=new test1();
t1.var1=1;
t1.var2=2;
t1.var3=3;
t1.var4=4;
//以上行为均是合法的,因为是在同一个包里,也在本类中。
}

public class class2{
t1.var1=1;//合法
t1.var2=2;//合法
t1.var3=3;//不合法
t1.var4=4;//合法
//因为var3的访问权限只有本类才有。
}
package mypack2;
public class class3 extends class1{
t1.var1=1;//合法
t1.var2=2;//合法,虽不是同一个包,但确实子类
t1.var3=3;//不合法,只有本类才有资格访问。
t1.var4=4;//不合法,不是一个包,不能访问
}

abstact 修饰符

abstact 修饰符可用来修饰类和成员方法

  • abstract修饰的类表示抽象类,位于继承树的抽象层,抽象类不能实例化。
  • absract修饰的成员方法表示抽象方法,抽象方法没有方法体,抽象方法只用来描述系统具有什么功能,不提供具体的体现。
  • 抽象方法只能在抽象类中。
public abstract class base{
abstract void method1;
}
public class subclass entends basd{
void method1(){
System.out.println("method1");
}
}
  1. 抽象类中可以没有抽象方法,但是具有抽象方法的类必须声明为抽象类,如果抽象类的子类没有实现父类的抽象方法,那么子类也必须定义为抽象类。
  2. abstract修饰词和static修饰词是冤家,不能凑到一起。一个代表抽象,一个代表具体,意思相反。
  3. 抽象类可以有非抽象的构造方法,因为子类可能会调用构造方法,也就是说抽象类的构造方法是给子类用的。
  4. 抽象类以及抽象方法不能被final修饰符修饰,因为抽象类必须有子类,final类不能有子类,二者冲突。
  5. 抽象方法不能被private修饰,因为抽象方法必须被某个子类取实现他,若是用private修饰,则不可能被子类实现了。

final修饰符

final类

Java中的继承的特效最大的缺点就是打破了封装,降低了安全性,为了让某些类失去继承的子类,所以引入了final类,该类不允许被继承。

  • 不是继承的类专门设计的类
  • 这个类不会再扩展
final方法

同样的,final方法是不允许覆盖的方法

final变量

同样的,final修饰的变量是不允许再次修改的变量,也就是常量,该变量声明之后,只能修改一次变量值。

  • final可以修饰静态变量、实例变量、局部变量,就变成了静态常量、实例常量和局部常量。
  • final修饰的量,必须初始化。
  • final变量只能被赋一次值。
  • 被final修饰的对象,内容无法改变。
  • final变量名最好全是大写字母。
public class  classA{
final static int x;//不合法没有显示初始化
final static int y=1;//合法
y=2;//不合法,只能赋一次值
int z;
public classA(int z){
this.z=z;
}
final classA a1=new classA(1);
a1=new classA(2);//不合法,对象内容不能改变
}

static修饰符

可以修饰成员变量、成员方法、代码块。

public class simple{
public static int number;
public void method(){
int x=number;//合法的,可直接访问静态变量
}
public static void print(){
System.out.println("print");
}
public static void main(String[] args){
print();//可直接访问
}
}
  • 修饰成员变量,可以通过类名来引用。
  • 修饰成员方法,可以直接调用
  • 修饰代码块,优先执行静态代码模块

另外静态量的运行方式和Java虚拟机有很大的关系,这里就不多讲了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值