关于访问权限public protected default private的小记

昨天下班和同事谈到protected的问题,然后发现自己对这个并不了解 ,今天做了一个例子记录一下

概念

 1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
 
 2、private:private表示私有,私有的意思就是除了class本类之外,任何其他类都不可以直接使用
 
 3、protected:表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。(同包及其子类可以访问)
 
 4、默认的:同一个包内可以访问,访问权限是包级访问权限
 

作用域当前类同一package子孙类其他package
public
protected×
default××
private×××

protected权限

1.同一个包中 声明为protected的方法和成员变量能被所有类所访问。
2.在不同包中 子类是不能通过父类的实例访问protected权限的方法或者变量的,能够使用其父类中protected成员的途径只能是,使用子类(或者是子类的子类)的引用(通俗解释就是不同包中的子类可以访问父类 但不是通过实例化父类的方式调用 而是可以直接调用或者实例化子类)

例如下面的代码:
父类:

package com.help.demo.spring.impl;

import java.util.Map;

import javax.security.auth.message.MessageInfo;

import com.help.demo.spring.MessageService;

public class MessageServiceImpl implements MessageService {

	protected String test1 = "被保护的属性";
	@Override
	public String getMessage() {
		// TODO 自动生成的方法存根
		 return "hello world 3";
	}
	
	protected String name() {
		System.out.println("被保护的方法");
		return "";
	}
	
	String name2(){
		System.out.println("默认方法");
		return "";
	}
	
	private void name3(){
		System.out.println("私有方法");
	}

}

不在同一包下的子类:

package com.help.demo.test;

import com.help.demo.spring.impl.MessageServiceImpl;

public class test extends MessageServiceImpl{

	
	
	public void hh(){
		MessageServiceImpl impl= new MessageServiceImpl();//new不能使用new对象调用
		
		
		this.name();
		//或者
		test t = new test();//通过new子类的对象调用父类的protected方法
		t.name();
		
	}
	
}

在这里插入图片描述
我是一个菜鸟 如果有什么不对的地方欢迎各位大神指正!

声明:本人只是为了记录自己的经历,如果侵犯到您的权益 ,请与1194821568@qq.com联系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值