访问控制符

前言

软件中的某些属性和方法出于程序安全考虑不允许被其它类操作和调用,这就需要使用Java中的访问权限修饰符,Java中的访问权限修饰符有4种:
在这里插入图片描述注:Java中的访问权限修饰符可以修饰成员变量、构造方法、普通方法。

访问控制符的使用范围

如下图
在这里插入图片描述
————下面逐个介绍这四个访问控制符————

一、private

private是最小的访问权限控制符,其修饰的成员变量、构造方法和普通方法只能在定义它们的类中被操作或使用。
此处不再举例证明

二、默认(友好的)

默认(友好的)修饰的成员变量、构造方法和普通方法可以在其定义类中与定义类同包的其它类(可以使子类)中使用,但如果不同包则不可使用。
下面是错误示例

package com.test.a;//包a
public class Person {
	int age=10;
}
package com.test.b;//包b
import com.test.a.Person;
public class Son extends Person{

	public static void main(String[] args) {
		Son son = new Son();
		son.age;====此处会报错,因为默认访问权限的变量age不能在不同包之间调用
	}
}

三、protected

protected修饰的成员变量、构造方法和普通方法可以在其定义类中、与定义类同包的其它类(可以使子类)中和与定义类不同包但是其子类的类中使用。
但要注意:
①如果protected修饰的属性和方法均为非静态的,则只能通过子类实例化对象调用其继承过来的属性和方法,而不能使用父类实例化的对象去调用。
②如果protected修饰的属性和方法均为静态的,则子类可以通过类(子类类名或父类类名)名直接调用。
例如

package com.test.a;

public class Person {
	
	protected int age=10;
	protected static int year;
}
package com.test.b;
import com.test.a.Person;

public class Son extends Person{

	public static void main(String[] args) {
		Son son = new Son();
		son.age=12;
//		Person p = new Person();
//		p.age=99;                  如果用父类实例化对象调用age则编译会报错
		Son.year=5;     //属性year用static修饰是静态属性,可以直接用类名调用
		Person.year=8;
	}

四、public

public是最大的访问权限修饰符,其修饰的成员变量、构造方法和普通方法可在任何一个类中被操作或使用。
此处不再举例说明。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值