【JAVA入门】Day12 - 权限修饰符

【JAVA入门】Day12 - 权限修饰符



        权限修饰符是用来控制一个成员能够被访问的范围的。
        权限修饰符可以修饰成员变量方法构造方法内部类

public class Student {
	private String name;
	private int age;
}

        在 Java 中一共四种权限修饰符,它们的作用范围从小到大为: private < 空着不写 < protected < public 。
在这里插入图片描述

一、private

        如果一个变量被 private 修饰,那么它在同一个类中可以使用,在同一个包中的其他类不能使用,在不同包下的子类也无法使用,在不同包下的无关类更不能使用。

  • 在同一个包 XiuShiFu 中,另一个 Animal 类生成的对象 a,无法直接使用 name。
package JavaStudy2.XiuShiFu;

public class Animal {
    private String name;

    public void show() {
        System.out.println(name);	//在自己类中可以直接使用 name
    }
}
package JavaStudy2.XiuShiFu;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        // System.out.println(a.name); 报错
    }
}
  • 现有另一个包 AnotherBag,其下有一个类 Dog 继承了 XiuShiFu 包(用 import 语句导入)里的 Animal,此时继承过来的 name,也无法被使用。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Dog extends Animal {
    public void show() {
        //System.out.println(name); 报错
    }
}
  • 现在另一个包 AnotherBag 中创建了一个新的 Test 类(无关类),然后导入 XiuShiFu 包里的 Animal 类,此时创建的 Animal 对象 a,还是无法使用 name。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        //System.out.println(a.name); 报错
    }
}

二、空着不写

        空着不写叫默认默认情况下,在同一个类中可以使用,在同一个包其他类中也可以使用,但在不同包下的子类和无关类中就无法使用。

  • 在同一个包 XiuShiFu 中,另一个 Animal 类生成的对象 a,可以直接使用 name。
package JavaStudy2.XiuShiFu;

public class Animal {
    String name;

    public void show() {
        System.out.println(name);	//在自己类中可以直接使用 name
    }
}
package JavaStudy2.XiuShiFu;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        System.out.println(a.name); 
    }
}
  • 现有另一个包 AnotherBag,其下有一个类 Dog 继承了 XiuShiFu 包(用 import 语句导入)里的 Animal,此时继承过来的 name,无法被使用。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Dog extends Animal {
    public void show() {
        //System.out.println(name); 报错
    }
}
  • 现在另一个包 AnotherBag 中创建了一个新的 Test 类(无关类),然后导入 XiuShiFu 包里的 Animal 类,此时创建的 Animal 对象 a,也无法使用 name。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        //System.out.println(a.name); 报错
    }
}

三、protected

        这个词的意思是受保护的受保护的在本类中能用,在同一个包其他类中也能用,在不同包下的子类还能用,但是无关类用不了。

  • 在同一个包 XiuShiFu 中,另一个 Animal 类生成的对象 a,可以直接使用 name。
package JavaStudy2.XiuShiFu;

public class Animal {
    protected String name;

    public void show() {
        System.out.println(name);	//在自己类中可以直接使用 name
    }
}
package JavaStudy2.XiuShiFu;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        System.out.println(a.name); 
    }
}
  • 现有另一个包 AnotherBag,其下有一个类 Dog 继承了 XiuShiFu 包(用 import 语句导入)里的 Animal,此时继承过来的 name,没有报错,可以被使用。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Dog extends Animal {
    public void show() {
        System.out.println(name);
    }
}
  • 现在另一个包 AnotherBag 中创建了一个新的 Test 类(无关类),然后导入 XiuShiFu 包里的 Animal 类,此时创建的 Animal 对象 a,无法使用 name,报错。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        //System.out.println(a.name); 报错
    }
}

四、public

        public意思是公共的公共的在以上提到的所有类中都能用。

  • 在同一个包 XiuShiFu 中,另一个 Animal 类生成的对象 a,可以直接使用 name。
package JavaStudy2.XiuShiFu;

public class Animal {
    public String name;

    public void show() {
        System.out.println(name);	//在自己类中可以直接使用 name
    }
}
package JavaStudy2.XiuShiFu;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        System.out.println(a.name); 
    }
}
  • 现有另一个包 AnotherBag,其下有一个类 Dog 继承了 XiuShiFu 包(用 import 语句导入)里的 Animal,此时继承过来的 name,没有报错,可以被使用。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Dog extends Animal {
    public void show() {
        System.out.println(name);
    }
}
  • 现在另一个包 AnotherBag 中创建了一个新的 Test 类(无关类),然后导入 XiuShiFu 包里的 Animal 类,此时创建的 Animal 对象 a,可以使用 name,没有报错。
package JavaStudy2.AnotherBag;

import JavaStudy2.XiuShiFu.Animal;

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        System.out.println(a.name);
    }
}

五、权限修饰符的使用规则

        在开发时,一般只使用 private 和 public。其中:

  • 成员变量私有
  • 方法公开

特例:如果方法中的代码是抽取其他方法中的共性代码,这个方法一般也设私有

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值