Java面向对象--权限修饰符-通俗易懂

目录

 

权限修饰符

一、权限修饰符有哪些?

二、权限修饰符可以修饰哪些?

1.修饰类

2.修饰类中的成员

三.权限修饰符作用范围

1.相同的类中

2.相同的包下不同的类

3.不同的包下不同的类之间

4. 相同包不同类之间存在继承的情况

5.不同包下不用类之间继承的情况(主函数在子类中)

6.不同包下不用类之间继承的情况(主函数不在子类中,主函数单独一个类)

 四、总结


权限修饰符

一、权限修饰符有哪些?

       public:公共的

      protected:受保护的

      默认不写

      private:私有的

二、权限修饰符可以修饰哪些?

1.修饰类

权限修饰符修饰类时:只能用public和 默认不写,其他不可以

       public class person{}

     或者

    class person{}

    注意:如果使用public来修饰时,类名必须和文件名一致

2.修饰类中的成员

    权限修饰符修饰类成员时:都可以使用

三.权限修饰符作用范围

1.相同的类中

       private、protected、默认不写、private 权限修饰符都可以使用

textA类

package day04;

public class textA {
	//测试public方法
	public void textPublic() {
		System.out.println("俺是A类public方法");
	}
	
	//测试protected方法
	protected void textProtcted() {
		System.out.println("俺是A类Protcted方法");
	}
	
	//测试默认的方法
	void textMoren() {
		System.out.println("俺是A类中默认方法");
	}
	
	//测试私有的方法
	private void textPrivate() {
		System.out.println("俺是A类中私有方法");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		/*创建一个对象,验证是否在同一个类中可以调用
		 *public
		 *protected
		 *默认不写
		 *private这四个类
		 */
		textA t = new textA();
		t.textPublic();//同一类可以使用
		t.textProtcted();//同一类可以使用
		t.textMoren();//同一类可以使用
		t.textPrivate();//同一类可以使用

	}

}

2.相同的包下不同的类

         public、protected、默认不写可以使用

         private不能使用

测试代码:

     定义一个day04包,下面创建两个类,分别是textA和textB

1.textA类

package day04;

public class textA {
	//测试public方法
	public void textPublic() {
		System.out.println("俺是A类public方法");
	}
	
	//测试protected方法
	protected void textProtcted() {
		System.out.println("俺是A类Protcted方法");
	}
	
	//测试默认的方法
	void textMoren() {
		System.out.println("俺是A类中默认方法");
	}
	
	//测试私有的方法
	private void textPrivate() {
		System.out.println("俺是A类中私有方法");
	}

}

2.textB类 

package day04;

/*
 * 创建一个类与textB同包,看同包下不同类之间的权限修饰符的作用范围
 */
public class textB {
	/*
	 * 将textA的主方法注释掉,在本类中进行测试
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		/*创建一个对象,验证是否在同一个包,不同类中可以调用
		 *public
		 *protected
		 *默认不写
		 *private这四个类
		 */
		textA t = new textA();
		t.textPublic();//同一个包,不同类中可以调用
		t.textProtcted();//同一个包,不同类中可以调用
		t.textMoren();//同一个包,不同类中可以调用
		//t.textPrivate(); private爆红,private只能在本类中直接调用,其他类调用不行

	}

}

3.不同的包下不同的类之间

       public可以

       protected、默认不写、private不可以

      注意:不同包调用方法。首先需要导包。

                语法:import  包名.类名

                如本案例中

 测试代码:

再创建一个day04text包,里面创建一个TextMain类,用TextMain类去调用不同包下textA中的方法

 TextMain类

package day04text;

import day04.textA;

public class TextMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		textA t = new textA();
		
		//不同包不同类之间的调用
		t.textPublic();//可以
//		t.textProtcted();//不可以
//		t.textMoren();//不可以
//		t.textPrivate(); //不可以

	}

}

4. 相同包不同类之间存在继承的情况

        public、protected、默认不写  可以使用

        private不可以

        相当于:相同的包下不同的类这种情况

1.textA类

package day04;

public class textA {
	//测试public方法
	public void textPublic() {
		System.out.println("俺是A类public方法");
	}
	
	//测试protected方法
	protected void textProtcted() {
		System.out.println("俺是A类Protcted方法");
	}
	
	//测试默认的方法
	void textMoren() {
		System.out.println("俺是A类中默认方法");
	}
	
	//测试私有的方法
	private void textPrivate() {
		System.out.println("俺是A类中私有方法");
	}
}

 2.textB类

package day04;
public class textB extends textA{
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		textA t = new textA();
		t.textPublic();//可以
		t.textProtcted();//可以
		t.textMoren();//可以
		//t.textPrivate(); //不可以

	}

}

 

5.不同包下不用类之间继承的情况(主函数在子类中)

     在day04text下创建一个textC,然后textC继承不同包下的textA方法

      public、protected可以使用

      默认不写、private不可以

textC类

package day04text;
//导包
import day04.textA;
public class textC extends textA{
	public void text(){
        public static void main(String[] args){
		    /*
		     * 不同包下去继承,只有public和protected修饰符可以使用
		     */
		    this.textPublic();//可以
		    this.textProtcted();//可以
		  //this.textMoren();//不可以
		  //this.textPrivate();不可以
       }
	}

}

 

6.不同包下不用类之间继承的情况(主函数不在子类中,主函数单独一个类)

     public可以使用

     默认不写、protected、private不可以使用

主函数类

package day04text;

import day04.textA;

public class text {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		textA t = new textA();
		t.textPublic();//可以
		//t.textProtcted();//不可以
		//t.textMoren();//不可以
		//t.textPrivate();//不可以

	}

}

 四、总结

权限修饰符表格总览
权限修饰符  当前类同一包其他包子类其他包类
public      √    √        √   √
protected     √   √        √ 
默认不写     √   √  
private     √   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值