java访问权限:public、protected、friendly、private

java的访问权限修饰符有四种,按由小到大的顺序依次是private,default,protected,public,我们用一个表格先来看一下所有的访问权限,接下来再挑重点的解释一下。

一.private

private是最小的访问权限控制符,其修饰的成员变量、构造方法和普通方法只能在定义它们的类中被操作或使用:

public class Father {
	
	private int age=10;
	
	public static void main(String[] args) {
		System.out.println(new Father().age);
	}
}

二.friendly友好的

默认(友好的)修饰比private要大,它修饰的成员变量、构造方法和普通方法不仅可以在其定义类中使用,还可以在与定义类同包的其它类中调用,继承与非继承均可:

//同一个包
//当两个类为非继承关系
package com.ghj.test;

public class Father {
	
	int age=10;
}


package com.ghj.test;

public class Son{
	
	public static void main(String[] args) {
		System.out.println(new Father().age);
	}
}

三.protected

protected的使用范围比友好的还要大一点,它修饰的成员变量、构造方法和普通方法不仅可以在同包中使用,还可以在不同包中使用,但前提是只能在定义类的子类中使用:

//不同包中的继承关系
package com.ghj.test;

public class Father {
	
	protected int age=10;
}


package com.ghj.tool;

import com.ghj.test.Father;

public class Son extends Father{
	
	public static void main(String[] args) {
		System.out.println(new Son().age);
	}
}

但是在不同包中使用分两种情况:

1.非静态

如果protected修饰的属性和方法均为非静态的,则只能通过子类的对象调用继承过来的属性和方法,而不能使用父类的对象去调用,也就是说以下代码便会报错,因为age是非静态的,而main方法中创建了父类的对象,所以调用age时便会出错:

//不同包中的继承关系
package com.ghj.test;

public class Father {
	
	protected int age=10;
}


package com.ghj.tool;

import com.ghj.test.Father;

public class Son extends Father{
	
	public static void main(String[] args) {
		System.out.println(new Father().age);
	}
}

2.静态

如果protected修饰的属性和方法均为静态的,则子类既可以通过父类和子类的对象调用,也可以通过类名直接调用:

//不同包中的继承关系
package com.ghj.test;

public class Father {
	
	protected static int age=10;
}


package com.ghj.tool;

import com.ghj.test.Father;

public class Son extends Father{
	
	public static void main(String[] args) {
		System.out.println(Father.age);
	}
}

以上三段的代码运行结果都如下:

四.public

public是访问权限修饰符中最大的,无论是否是一个包内的,无论是否是继承关系,只要是一个工程里的,就可以调用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值