J2SE_访问权限(public, protected, default, private)

一、四种访问权限简介

1)public: 公共访问权限,不管在本类,本包,子类,不同包中都可以访问被public修饰的属性和方法

2)protected: 包级访问权限,在本包中和其他包的子类中可以访问

3)default: 包级访问权限,在本包中可以访问,出了本包都是非法的

4)private: 类级访问权限,只有在本类可以访问,出了本类都是非法的

二、简图


三、示例代码

1)类A

四种不同访问权限的方法

package com.wbf.test1;

public class A {
	public void pub(){
		System.out.println("...public...");
	}
	protected void pro(){
		System.out.println("...protected...");
	}
	void def(){
		System.out.println("...default...");
	}
	private void pri(){
		System.out.println("...private...");
	}
}
2)类B

与A类同一个包,不是A的子类。除了private方法不可以方法,其他的都可以。

package com.wbf.test1;

//与A类同一个包,不是A的子类
public class B {
	public static void main(String args[]){
		A a = new A();
		a.pub();  //pub()为A的public方法
		a.pro();  //pro()为A的protected方法
		a.def(); //def()为A的default方法
		//a.pri(); //pri()为A的private方法
	}
}
3)类C

与A不同包,不是A的子类。除了public方法可以访问,其他的都不可以。

package com.wbf.test2;

import com.wbf.test1.A;

//与A不同包,不是A的子类
public class C {
	public static void main(String args[]){
		A a = new A();
		a.pub();  //pub()为A的public方法
		//a.pro();  //pro()为A的protected方法
		//a.def(); //def()为A的default方法
		//a.pri(); //pri()为A的private方法
	}
}
4)类A1

与A同包,是A的子类。除了private方法不可以访问,其他的都可以。

package com.wbf.test1;

import com.wbf.test1.A;

//与A同包,是A的子类
public class A1 extends A {

	public static void main(String[] args) {
		A a = new A();
		a.pub();  //pub()为A的public方法
		a.pro();  //pro()为A的protected方法
		a.def(); //def()为A的default方法
		//a.pri(); //pri()为A的private方法
		
		A1 a1 = new A1();
		a1.pub();
		a1.pro();
		a1.def();
		//a1.pri();
	}
}
5)类A2

与A不同包,是A的子类。

通过子类A1可以访问从父类继承来的public和protected方法,default和private方法不可以访问。

通过父类A来访问自身的方法,发现只有public方法可以访问,因为其他3中方法的访问权限都是在包级以内的,出了包,就不可以访问了。

package com.wbf.test2;

import com.wbf.test1.A;

//与A不同包,是A的子类
public class A2 extends A {

	public static void main(String[] args) {
		A a = new A();
		a.pub();  //pub()为A的public方法
		//a.pro();  //pro()为A的protected方法
		//a.def(); //def()为A的default方法
		//a.pri(); //pri()为A的private方法
		
		A2 a2 = new A2();
		a2.pub();
		a2.pro();
		//a2.def();
		//a2.pri();
	}
}
四、小结

1)default和protected都是包级访问权限,出了包就都不可以方法。但是protected属性或方法可以在不同包的子类中访问。

2)从thinking in java和 core java中都可以看出,子类继承了父类的所有属性和方法,只不过private属性和方法的访问级别是类级别,出了本类就无法访问了。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值