java访问修饰符的区别_java中四种访问修饰符区别及详解全过程

客户端程序员:即在其应用中使用数据类型的类消费者,他的目标是收集各种用来实现快速应用开发的类。

类创建者:即创建新数据类型的程序员,目标是构建类。

访问控制存在的原因:a、让客户端程序员无法触及他们不应该触及的部分  ; b、允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员

java的四个关键字:public、protected、default、private(他们决定了紧跟其后被定义的东西可以被谁使用)

适用范围

访问权限   类   包  子类  其他包

public     ∨   ∨    ∨     ∨          (对任何人都是可用的)

protect    ∨   ∨   ∨     ×    (继承的类可以访问以及和private一样的权限)

default    ∨   ∨   ×     ×    (包访问权限,即在整个包内均可被访问)

private    ∨   ×   ×     ×    (除类型创建者和类型的内部方法之外的任何人都不能访问的元素)

以下,用代码进行详解(建四个类 Person Student Teacher Parents 和一个测试类)

package com.zq.demo.test1;

/**

* 类内

* @author Administrator

*/

public class Person {

public String uname = "王五";

public void introduceMyself(){

System.out.println(uname);

}

}

package com.zq.demo.test1;

//同一个包

public class Student {

Person p =  new Person();

public void test(){

System.out.println(p.uname);

}

}

package com.zq.demo.test1;

//子类

public class Teacher extends Person{

public int age;

Person p = new Person();

public void test1(){

System.out.println(p.uname);

}

}

package com.zq.demo.test2;

//不同包

import com.zq.demo.test1.Person;

public class Parents {

public String uname = "haha";

Person p = new Person();

public void test2(){

System.out.println(p.uname);

}

}

测试类的结果  显示public在上述均能访问到

5ac63a82cab7

用同样的四个类    来测试protected

在将Person中的uanme改为protected后   类Parents便报错了   The field Person.uname is not visible  (说明不能跨包)

其他三个无影响

说明除了跨包  其他均不影响访问

5ac63a82cab7

private

5ac63a82cab7

只有本类中可以访问 但是借助在Person类中有关uname的set、get方法便可以进行访问

5ac63a82cab7

5ac63a82cab7

default

5ac63a82cab7

测试结果说明  只能在本包中进行访问  在其他包   即使是继承关系  也无法进行访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值