Java访问控制符

Java提供了4种访问控制符,主要用于控制其他类是否可以访问某一类中的属性或方法,从而实现数据封装。四种访问控制符的权限大小(由大到小)为public(公共)、protected(保护)、default(默认)、 private(私有)。

private(私有):当类中属性或方法被private修饰时,表示此成员或方法只能被自己类中的方法使用,而不能被外部类或对象直接使用。例如:

public class PersonDemo {
	public static void main(String[] args) {
		Person person = new Person();
		//person.name = "张三";//不能访问Person类中的私有属性
		//person.fun();//不能访问Person类中的私有方法
	}
	
}

class Person {
	private String name = "";
	
	private void fun() {
		System.out.println(this.name);//可以访问自己类中的私有属性
	}
	
	public void fun1() {
		fun();//可以访问自己类中的私有方法
	}
}
default(默认):具有包访问权限,如果类中属性或方法不使用public,protected,privete修饰符修饰时,则说明其具有包访问权限,具有包访问权限的属性或方法既可以被自己类中的方法使用也可以被同一包下的其他类使用,但不能被其他包中的类使用。例如:
package com.person.test;

public class PersonDemo {
	int age;
	
	public void fun() {
		System.out.println(this.age);//可以访问自己类中的默认属性
	}
}


package com.person.test;

public class ManagerDemo {
	public static void main(String[] args) {
		PersonDemo personDemo = new PersonDemo();
		personDemo.age = 18;//可以访问同一包下类中的默认属性
	}
}


package com.student.test;

import com.person.test.PersonDemo;

public class StudentDemo {
	public static void main(String[] args) {
		PersonDemo personDemo = new PersonDemo();
		//personDemo.age = 18;//不能访问不同包下类中的默认属性
	}
}
protected(保护):具有子类访问权限。如果类中属性或方法被protected修饰符修饰,则此类中属性或方法可以被同一包下的类使用,也可以被不同包下的子类使用,但不能被不同包下的其他类使用。例如:

package com.person.test;

public class PersonDemo {
	protected int age;
}


package com.student.test;

import com.person.test.PersonDemo;

public class SubDemo extends PersonDemo{
	public static void main(String[] args) {
		SubDemo subDemo = new SubDemo();
		subDemo.age = 18;//保护属性被不同包下的子类使用
	}
}


package com.student.test;

import com.person.test.PersonDemo;

public class StudentDemo {
	public static void main(String[] args) {
		PersonDemo personDemo = new PersonDemo();
		//personDemo.age = 18;//保护属性不能被其他包中的类使用
	}
}
public(公共):具有公共访问权限。如果类中的属性或方法被public修饰,则此类中的属性或方法可以被任何类调用。

总结:
四种访问控制权限如下("+"号表示有访问权限, "-"号表示没有访问权限):




  • 30
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java中类成员的访问控制指的是用于控制类的成员(字段、方法、构造方法等)能否被外部代码访问的关键字。Java中提供了四种访问控制,分别是: 1. public:公共的,任何类都可以访问。 2. protected:受保护的,只有同一个包中的类和该类的子类可以访问。 3. 默认(也称为包访问权限):没有关键字修饰,只有同一个包中的类可以访问。 4. private:私有的,只有该类中的其他成员可以访问。 下面是一些示例代码,展示了不同访问控制的使用方法: ``` public class MyClass { public int x; // 公共的,任何类都可以访问 protected int y; // 受保护的,只有同一个包中的类和该类的子类可以访问 int z; // 默认的,只有同一个包中的类可以访问 private int w; // 私有的,只有该类中的其他成员可以访问 public void foo() { x = 1; // 可以在类的任何方法中访问公共的成员 y = 2; // 可以在类的任何方法中访问受保护的成员 z = 3; // 可以在类的任何方法中访问默认的成员 w = 4; // 可以在类的任何方法中访问私有的成员 } } public class AnotherClass { public void bar() { MyClass obj = new MyClass(); obj.x = 1; // 可以访问公共的成员 // obj.y = 2; // 不能访问受保护的成员 // obj.z = 3; // 不能访问默认的成员 // obj.w = 4; // 不能访问私有的成员 } } public class SubClass extends MyClass { public void baz() { x = 1; // 可以访问公共的成员 y = 2; // 可以访问受保护的成员 z = 3; // 可以访问默认的成员 // w = 4; // 不能访问私有的成员 } } ``` 在这个示例代码中,MyClass类中定义了四个成员变量,分别使用了不同的访问控制。在MyClass类的foo()方法中,可以在类的任何方法中访问所有成员变量。在AnotherClass类中,虽然可以访问MyClass类的公共成员变量,但不能访问受保护、默认和私有成员变量。在SubClass类中,由于SubClass是MyClass的子类,因此可以访问MyClass类的公共和受保护成员变量,以及默认成员变量。但不能访问私有成员变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值