java测试四种不同的权限修饰符


文章内容选自尚硅谷
以前的内容没有讲解完全,现在补上,链接为 java的四种权限修饰符.

测试private

private是类封装性的重要体现,在java中,私有方法和属性只能在类的内部调用
先在com.atguigu.java2包内创建一个Order的类

package com.atguigu.java2;

public class Order {
    
    
	private int orderPrivate;	
	int orderDefault;
	protected int orderProtected;
	public int orderPublic;
	
	private void methodPrivate(){
    
    
		orderPrivate = 1;
		orderDefault = 2;
		orderProtected = 3;
		orderPublic =4;
	}
	void methodDefault(){
    
    
		orderPrivate = 1;
		orderDefault = 2;
		orderProtected = 3;
		orderPublic =4;
	}
	protected void methodProtected(){
    
    
		orderPrivate = 1;
		orderDefault = 2;
		orderProtected = 3;
		orderPublic =4;
	}
	
	public void methodPublic(){
    
    
		orderPrivate = 1;
		orderDefault = 2;
		orderProtected = 3;
		orderPublic =4;
	}
}

再在同一个包下创建一个OrderTest的类

package com.atguigu.java2;

public class OrderTest {
    
    
	public static void main(String[] args) {
    
    
		Order order = new Order();
		order.orderDefault = 1;
		order.orderProtected =2;
		order.orderpublic =3;
		
		order.methodDefault();
		order.methodProtected();
		order.methodPublic();
		
//		order.methodPrivate();
//		order.orderPrivate();
	}
}

注释掉的部分即为不可visible的部分,系统会因为封装性而报错的部分。

测试protected和default

protected可用于不同包的子类,也能用于同一个包下,这儿主要测试不同包下的子类
创建一个com.atguigu.java3的包,再在包内创建一个SubOrder的类,该类要继承自com.atguigu.java2包下的Order类,因此必须要import导入。代码如下

package com.atguigu.java3;

import com.atguigu.java2.Order;

public class SubOrder extends Order {
    
    
	public void method(){
    
    
		orderProtected = 1;
		orderPublic =2;
		
		methodProtected();
		methodPublic();
		
//		orderDefault =3;	
//		orderPrivate =4;
//		
//		methodDefault();
//		methodPrivate();
		
		
	}
}

注释掉的部分即为not visible的部分,protected体现了不同包下的继承关系,需要用一个protected修饰符来扩大继承关系的适用范围。

因为是不同包,因此default缺省的属性和方法都不适用了,因为他们只适用于同一个包下。

测试public

public的适用范围是整个工程,但是在包下导入其他包的类,要用import关键字,这儿记住一个快捷方式ctrl + shift+o,能够自动加上import关键字。

package com.atguigu.java3;

import com.atguigu.java2.Order;

public class OrderTest {
    
    
	public static void main(String[] args) {
    
    
		Order order = new Order();//ctrl + shift + o能够快速导入包
		order.orderPublic = 1;
		order.methodPublic();
		
//		order.orderPrivate = 2;
//		order.orderDefault =3;
//		order.orderProtected = 4;
//		
//		order.methodPrivate();
//		order.methodDefault();
//		order.methodProtected();
	}
}

同样,注释部分是not visible的。

猜你喜欢

转载自blog.csdn.net/Meloneating/article/details/113753201
今日推荐