四种访问权限,private、default(一般省略)、protected、public

这里的default 与 显示出现的 default 关键字(下面) 不是一个意思。

https://blog.csdn.net/anyway8090/article/details/86366406

在这里插入图片描述
1.类的访问权限修饰符:决定该类是否可以被他类访问(能否创建对象),和继承。
2.成员变量和成员方法的修饰符:
(1)对于子类,决定是否能够直接访问,通过创建对象访问父类中的方法和protected访问修饰符失效,访问范围等价于default;
(2)对于无关类,决定能否通过创建对象访问;通过对象去访问就无法判断是否有父子关系,就没有不同包子类这种情况。

https://blog.csdn.net/u010876691/article/details/72724415

package cn.com.tes1;
 
public class DemoA {
 
	private String S1="a";//private修饰的成员变量
			String S2="b";//默认修饰符修饰的成员变量
  protected String S3="c";//protected修饰的成员变量
	 public String S4="d";//public修饰的成员变量
	//private修饰的成员方法
	private void getS1() {
		System.out.println(S1);
	}
	//默认修饰符修饰的成员方法
	 void getS2() {
		 System.out.println(S2);
	}
	//protected修饰符修饰的成员方法
	 protected void getS3() {
		 System.out.println(S3);
	}
	//public修饰符修饰的成员方法
	 public void getS4() {
		 System.out.println(S4);
	}
}

default关键字介绍
default是在java8中引入的关键字,也可称为Virtual
extension methods——虚拟扩展方法。是指,在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。
为什么要有这个特性?
首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的java8之前的集合框架没有foreach方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现。然而,对于已经发布的版本,是没法在给接口添加新方法的同时不影响已有的实现。所以引进的默认方法。他们的目的是为了解决接口的修改与现有的实现不兼容的问题。

妙文:https://blog.csdn.net/qq_35835624/article/details/80196932
总的来说,就是以前类实现接口必须对接口中的方法进行重写,但是当一个接口被太多类实现时,要写的工作量就变得更多了,而且当这个方法的功能高度内聚时,这样的行为就十分sb了。所以是不是只在接口中加入一个默认带有方法体的方法,让别的实现类不用重写,用到时直接调用接口中的这个默认方法。
对继承和接口的default方法: 类大于接口

引申:
在spring的@autowired标签接口中:
在这里插入图片描述
在 @Autowired 注解中就声明了一个名为 required 的 boolean 类型数据,其默认值是 true。

注意

在这里插入图片描述
静态方法缺失权限修饰,只能当前包下类可以调用,跨包不能调用。

详情博客:
https://blog.csdn.net/chuiren476328/article/details/100893677

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值