首页 > 代码库 > java中类之间的继承和访问权限

java中类之间的继承和访问权限

package baseDemo1;

/**
 * 类之间的继承和访问
 * */
public class Demo1 {
	public void method1() {
		
	}
	
	protected void method2(){
		
	}
	
	void method3(){
		
	}
	
	private void method4(){
		
	}
	
	public static void main(String[] args){
		/**
		 * Demo1访问同一个package中的类Demo5。
		 * Demo5不是public类
		 * 结论:类的修饰符public是针对不同包之间的访问
		 * 类修饰符,对本包之间的类访问,没有影响 
		 * */
		Demo5 d5 = new Demo5();
		d5.method1();  //public  OK
		d5.method2();  //protected  OK
		d5.method3();  //default  OK
		//d5.method4();  //private Error
		
		
		/**
		 * 访问不同package中的类Demo2
		 * 结论:只能访问不同package中的public类中的public成员
		 */
		baseDemo2.Demo2 d2 = new baseDemo2.Demo2();
		d2.fun1();  //public OK
		//d2.fun2();  //protected  Error
		//d2.fun3();  //default  Error
		//d2.fun4();  //private  Error
		
		/**
		 * Demo3继承同一个package中的类Demo1
		 * 同一个package中类的继承: 子类能继承父类除了private之外的所有成员
		 * */
		Demo3 d3 = new Demo3();
		d3.method1();  //public  OK
		d3.method2();  //protected  OK
		d3.method3();  //default  OK
		//d3.method4();  //private Error
		
		/**
		 * Demo4继承不同的package中的类Demo2
		 * 不同package中,类的继承: 子类只能继承父类的public成员
		 * */
		Demo4 d4 = new Demo4();
		d4.fun1();  //public OK
		//d4.fun2();  //protected  Error
		//d2.fun3();  //default  Error
		//d2.fun4();  //private  Error
	}
}

/**
 * Demo3继承同一个package中的类Demo1
 * */
class Demo3 extends Demo1{
	
}

/**
 * Demo4继承不同的package中的类Demo2
 * */
class Demo4 extends baseDemo2.Demo2{
	
}

class Demo5{
public void method1() {
		
	}
	
	protected void method2(){
		
	}
	
	void method3(){
		
	}
	
	private void method4(){
		
	}
}



<strong>package baseDemo2;</strong>

public class Demo2 {
	public void fun1(){
		
	}
	
	protected void fun2(){
		
	}
	
	
	void fun3(){
		
	}
	
	private void fun4(){
		
	}
	
}


java中类之间的继承和访问权限