Java权限修饰符(包括Java8 default介绍)

简介: Java权限修饰符(包括Java8 default介绍)

权限修饰符


概述


在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限,


  • public:公共的。


  • protected:受保护的


  • default:默认的


  • private:私有的


不同权限的访问能力


image.png


可见,public具有最大权限。private则是最小权限。


编写代码时,如果没有特殊的考虑,建议这样使用权限:


  • 成员变量使用 private ,隐藏细节。


  • 构造方法使用 public ,方便创建对象。


  • 成员方法使用 public ,方便调用方法。


小贴士:不加权限修饰符,其访问能力与default修饰符相同


default关键字介绍


今天复习偶尔看到了有default关键字,这是有生之年第一次见到这个关键字,然后百度了一下,发现是Java8的新特性,所以干脆详细学习一下,整理了下面的东西。


default常用于接口中,从它的中文意思行来看,大概能猜个差不多,我们本来写Java接口的时候,是不能有方法体的函数,就类似于C++中的虚函数,default关键字在接口中修饰方法时,方法可以有方法体,来看一个例子。


举例


Default类


public interface Default {
    default public void method(){
        System.out.println("接口中的方法");
    }
}


一个接口,method方法在使用关键字default后可以有方法体了。


public class DefaultImpl implements Default {
    @Override
    public void method() {
        System.out.println("类中的方法");
    }
    public static void main(String[] args){
        Default d = new DefaultImpl();
        d.method();
    }
}


DefaultImpl实现了Default接口,最终运行结果:


类中的方法


而此时如果Default接口再加一个方法呢,如果这个方法没有default关键字修饰,则DefaultImpl没有实现这个方法就会报错,这就体现了default关键字的作用。我们继续修改Default接口。


Default接口如下:


public interface Default {
    default public void method(){
         System.out.println("接口中的方法");
    }
    default public void doSomeThing(){
         System.out.println("在接口中搞事情");
    }
}


DefaultImpl并没有重写doSomeThing方法


public class DefaultImpl implements Default {
  @Override
  public void method() {
       System.out.println("类中的方法");
  }
  // 此时没有去重写接口中的方法doSomeThing
  // 在这里会默认生成一个,子类对象调用时候会直接使用接口中的doSomeThing方法
  public static void main(String[] args){
      Default d = new DefaultImpl();
      d.method();
      d.doSomeThing();
  }
}


运行结果如下:


类中的方法
在接口中搞事情


运行结果符合Java多态的特性,default关键字可以让接口中的方法可以有默认的函数体,当一个类实现这个接口时,可以不用去实现这个方法,当然,这个类若实现这个方法,就等于子类覆盖了这个方法,最终运行结果符合Java多态特性。

相关文章
|
4月前
|
安全 Java 开发者
Java修饰符与封装:理解访问权限、行为控制与数据隐藏的重要性
Java中的修饰符和封装概念是构建健壯、易维护和扩展的Java应用程序的基石。通过合理利用访问权限修饰符和非访问修饰符,开发者能够设计出更加安全、灵活且高效的代码结构。封装不仅是面向对象编程的核心原则之一,也是提高软件项目质量和可维护性的关键策略。
44 1
|
3月前
|
Java 编译器 API
从Java 8到Java 17,这些新特性让你的代码起飞!
【10月更文挑战第10天】在软件开发领域,Java作为一种历史悠久且广泛使用的编程语言,不断进化以适应新的需求和挑战。从Java 8到Java 17,每一次版本更新都带来了诸多新特性和改进,极大地提升了开发效率和代码质量。今天,我们就来一起探讨这些新特性,看看它们是如何让我们的代码“起飞”的。
216 0
|
3月前
|
Java
java中的权限修饰符
java中的权限修饰符
|
5月前
|
Java
【Java基础面试三】、说一说你对Java访问权限的了解
这篇文章介绍了Java中的四种访问权限:private、default(无修饰符时的访问权限)、protected和public,以及它们分别在修饰成员变量/方法和类时的不同访问级别和规则。
【Java基础面试三】、说一说你对Java访问权限的了解
|
5月前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
76 8
|
5月前
|
Java API
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
Java8 Lambda 设计和实现问题之在Java 8的Stream API中,parallel=false时collect方法是如何实现的
|
5月前
|
前端开发 Java 编译器
【前端学java】类中的访问权限详解,通俗易懂(5)
【8月更文挑战第9天】类中的访问权限详解,通俗易懂(5)
65 0
### Cause: java.sql.SQLException: Field ‘id‘ doesn‘t have a default value; Field ‘id‘ doesn‘t have
### Cause: java.sql.SQLException: Field ‘id‘ doesn‘t have a default value; Field ‘id‘ doesn‘t have
|
6月前
|
SQL Java 数据库连接
Cause: java.sql.SQLException: Field ‘id‘ doesn‘t have a default value; Field ‘id‘ doesn‘t have a de
Cause: java.sql.SQLException: Field ‘id‘ doesn‘t have a default value; Field ‘id‘ doesn‘t have a de
|
7月前
|
Java 数据安全/隐私保护
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
40 0