变量、方法的访问权限

类成员的访问权限

总体介绍

java有三个访问权限修饰词,public、protected、private,如果不加以上的修饰词,则是默认的friendly(包访问权限)。

  • public:公共权限,无论是谁,无论在哪,都可以访问该成员。
  • protected:继承访问权限(受保护的),同一个包的类、及其子类可以访问该成员。
  • private:私有权限,只允许本类内部可以访问该成员。
  • friendly 友好(默认的):只允许同一个包内的类访问该成员

分析难点

public和private比较好理解,不做过多解释。protected和friendly涉及两个概念,同包类及其子类

子类好理解,同包类是啥呢?

  • org.ludk.p1.Person与org.ludk.p1.TestMain1,这两个类是同包类。
  • org.ludk.p1.Person与org.ludk.p1.p11.TestMainIfTB,这两个类不是同包类。

验证

org.ludk.p1.Person
有四个成员变量,分别为不同的变量修饰符

package org.ludk.p1;

public class Person {
    private String numberId;
    public String name;
    protected String age;
    String  friend;
}

org.ludk.p1.TestMain1

public class TestMain1 {
    public static void main(String[] args) {
        Person person=new Person();
        //private私有的,只有Person类内部可以访问
        String numberId=person.numberId;
        //public公有的,到哪都可以访问
        String name=person.name;
        //protected受保护的,同包类及其子类可以访问。
        // 现在是因为org.ludk.p1.TestMain1是Person是org.ludk.p1.Person的同包类,所以可以访问。
        String age=person.age;
        //默认的,同包类可以访问
        // 现在是因为org.ludk.p1.TestMain1是Person是org.ludk.p1.Person的同包类,所以可以访问。
        String friend=person.friend;
        System.out.println(numberId+name+age+friend);
    }
}

org.ludk.p1.p11.TestMainIfTB
主要验证非同包类,不能访问protected和friendly

package org.ludk.p1.p11;

import org.ludk.p1.Person;

public class TestMainIfTB {
    public static void main(String[] args) {
        Person person=new Person();
        //private私有的,只有Person类内部可以访问
        String numberId=person.numberId;
        //public公有的,到哪都可以访问
        String name=person.name;
        //protected受保护的,同包类及其子类可以访问。
        // 现在是因为org.ludk.p1.p11.TestMainIfTB和org.ludk.p1.Person不是同包类,所以不能访问
        String age=person.age;
        //默认的,同包类可以访问
        // 现在是因为org.ludk.p1.p11.TestMainIfTB和org.ludk.p1.Person不是同包类,所以不能访问
        String friend=person.friend;
        System.out.println(numberId+name+age+friend);
    }
}

org.ludk.p1.p11.TestStudent
主要验证非同包类,但是继承了Person,算是子类。

package org.ludk.p1.p11;

import org.ludk.p1.Person;

public class TestStudent extends Person {
    public void test(){
        //private私有的,只有Person类内部可以访问
        String numberId=this.numberId;
        //public公有的,到哪都可以访问
        String name=this.name;
        //protected受保护的,同包类及其子类可以访问。现在是因为TestStudent是Person的子类,所以可以访问。
        String age=this.age;
        //默认的,同包类可以访问,不是同包类,所以不可以访问
        String friend=this.friend;
        System.out.println(numberId+name+age+friend);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值