不积跬步,无以至千里;不积小流,无以成江海。

Java语言基础

Java访问修饰符

访问修饰符同类同包不同包,子类不同包,非子类
public
protected 
默认  
private   
  • 1. 首先是同一个类(Test 类)中,4种权限修饰符所修饰成员的访问情况
package study;

public class Test {

	public void print() {
		System.out.println("public方法!");
	}
	protected void print1() {
		System.out.println("protected方法!");
	}
	void print2() {
		System.out.println("默认方法!");
	}
	private void print3() {
		System.out.println("privated方法!");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test test = new Test();
		test.print();
		test.print1();
		test.print2();
		test.print3();
	}

}

程序输出:

public方法!
protected方法!
默认方法!
privated方法!

 

  • 2. 同一个包中(子类与其它类))4种权限修饰符所修饰成员的访问情况 
  • a. 同包中的子类
package study;

public class Test {

	public void print() {
		System.out.println("public方法!");
	}
	protected void print1() {
		System.out.println("protected方法!");
	}
	void print2() {
		System.out.println("默认方法!");
	}
	private void print3() {
		System.out.println("privated方法!");
	}

}

class Son extends Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Son son = new Son();
		son.print();
		son.print1();
		son.print2();
		son.print3();//这里提示错误,程序无法执行。
	}
}

  

  • b. 同包的其他类
package study;

public class Test {

	public void print() {
		System.out.println("public方法!");
	}
	protected void print1() {
		System.out.println("protected方法!");
	}
	void print2() {
		System.out.println("默认方法!");
	}
	private void print3() {
		System.out.println("privated方法!");
	}

}

class Other {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test test = new Test();
		test.print();
		test.print1();
		test.print2();
		test.print3();//这里提示错误,程序无法执行。
	}
}

  

  • 3. 不同包中(子类与其它类))4种权限修饰符所修饰成员的访问情况
  • 子类
package study;

public class Test {

	public void print() {
		System.out.println("public方法!");
	}
	protected void print1() {
		System.out.println("protected方法!");
	}
	void print2() {
		System.out.println("默认方法!");
	}
	private void print3() {
		System.out.println("privated方法!");
	}

}


package study1;

import study.*;

public class Son1 extends Test{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Son1 son1 = new Son1();
		son1.print();
		son1.print1();
		son1.print2();//程序错误,无法执行。
		son1.print3();//程序错误,无法执行。
	}

}

  

  • 其他类
package study;

public class Test {

	public void print() {
		System.out.println("public方法!");
	}
	protected void print1() {
		System.out.println("protected方法!");
	}
	void print2() {
		System.out.println("默认方法!");
	}
	private void print3() {
		System.out.println("privated方法!");
	}

}


package study1;

import study.*;

public class Son1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test test = new Test();
		test.print();
		test.print1();//程序错误,无法执行。
		test.print2();//程序错误,无法执行。
		test.print3();//程序错误,无法执行。
	}

}

  

注意:所说的同一个包或者不同包,指的是编译后的class文件是否在同一个文件夹里。

博客借鉴:https://blog.csdn.net/u013771764/article/details/81226908

01-08 18:51