java的四个访问修饰符_java中的四个访问修饰符

1、JAVA中有四个访问修饰符:default/public/private/protected

2、他们都拥有着不同的访问权限,而在不同情况下又有着不同的访问权限,分为以下几种

{

1、同类中

{

首先我们写一段用来测试的代码

{

class boar

{

void defmethod()

{

System.out.println("default method");

}

protected void promethod()

{

System.out.println("protected method");

}

private void primethod()

{

System.out.println("private method");

}

public void pubmethod()

{

System.out.println("public method");

}

public static void main(String[] sl)

{

boar objboar=new boar();

objboar.defmethod();

objboar.promethod();

objboar.primethod();

objboar.pubmethod();

}

}    保存,编译,成功!

打印结果:

default method

protected method

private method

public method

通过以上测试,我们得出:在同一类中,这四个方法都是可以被访问的!   }

}

2、同包中的两个类

{

首先我们来写代码(写两个类,把他们放到同一包下):

{

类一:

package boar.medemo;

class boar

{

void defmethod()

{

System.out.println("default method");

}

protected void promethod()

{

System.out.println("protected method");

}

private void primethod()

{

System.out.println("private method");

}

public void pubmethod()

{

System.out.println("public method");

}

}    类二:

package boar.medemo;

class boardemo

{

public static void main(String[] sl)

{

boar objboar=new boar();

objboar.defmethod();

objboar.primethod();

objboar.promethod();

objboar.pubmethod();

}

}

}   保存代码,编译,在这时,编译的时候会提示如下错误提示:

boardemo.java:8: primethod() 可以在 boar.medemo.boar 中访问 private

objboar.primethod();

^

1 错误

意思是说:boar方法中的primethod()方法无法访问

因此我们得出:在同一包中,private的方法没有权限访问!}

3、在不同包中子类继续父类

{

首先,我们来写代码(写两个类,放在不同的包中)

{

代码一:

package boar.medemo;

public class boar

{

void defmethod()

{

System.out.println("default method");

}

protected void promethod()

{

System.out.println("protected method");

}

private void primethod()

{

System.out.println("private method");

}

public void pubmethod()

{

System.out.println("public method");

}

}    代码二:

import boar.medemo.boar;

class boardemo extends boar

{

public void pro()

{

defmethod();

primethod();

promethod();

pubmethod();

}

}

}   保存,编译(javac -d . boar.java和javac -d . boardemo.java),这时系统提示:

boardemo.java:6: 找不到符号

符号: 方法 defmethod()

位置: 类 boardemo

defmethod();

^

boardemo.java:7: 找不到符号

符号: 方法 primethod()

位置: 类 boardemo

primethod();

^

2 错误

我们可以看到:在不同的包中,缺省的方法和私有的方法是不能被访问的。由于boardemo类是继承boar类的,因此protected的方法也是可以被访问的。而default方法上面我们已经得到验证,它只能在同一个包中的类进行访问,所以default方法也不能被访问

因此,我们得到:在不同的包中(继承过来),缺省方法(default)和私有方法(private)是不能被访问的}

}

关系图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值