JAVA中的四种访问修饰符区别以及详解
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);
    }
}

JAVA中的四种访问修饰符区别以及详解|public

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

用同样的四个类    来测试protected

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

其他三个无影响

JAVA中的四种访问修饰符区别以及详解|protectet

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

private:

JAVA中的四种访问修饰符区别以及详解|private

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

default:

JAVA中的四种访问修饰符区别以及详解|default测试结果说明  只能在本包中进行访问  在其他包   即使是继承关系  也无法进行访问

声明:所有内容均收集于网络,收集的内容仅供内部学习和讨论,建议您在下载后的24个小时之内从您的电脑或手机中删除上述内容,如果您喜欢该内容,请支持并购买正版资源。如若本站内容侵犯了原著者的合法权益,请联系邮箱3641180084@qq.com,我们将及时处理。