美文网首页技术栈
2019-02-12——Java 修饰符

2019-02-12——Java 修饰符

作者: 烟雨乱平生 | 来源:发表于2019-02-13 14:52 被阅读0次

在Java中,修饰符分为四种:

  • public
  • protected
  • default
  • private

关于四种修饰符的访问权限:

修饰符 内部类 同包 子类 外部包
public Y Y Y Y
protected Y Y Y
default Y Y
private Y

这种权限关系表适用于类的所有成员属性,当然也有例外,比如内部类:

public class A {

    private B b;

    private void t(){
        String value = b.value;
    }

    private class B{
        private String value;
    }
}

这里只讨论修饰符的访问权限,可以看到对于B类的私有属性value在该类的外部访问了,即打破了private属性只能在类内部访问的规则。

为什么外部类能够访问内部类的私有属性?
这是因为编译器会生成一个package scope的access方法,该方法是一个get方法并且该方法是一个synthetic性质的方法。
所以外部类对内部类的私有属性的访问就相当于调用了一个get方法,大概情形如下:

public class A {

    private B b;

    private void t(){
        String value = b.getValue();
    }

    private class B{
        private String value;
        public String getValue(){
            return value;
        }
    }
}

所以看起来外部类访问内部类的私有属性打破了private的访问权限规则,其实并非如此,而是由编译器提供了一个可以由外部类访问的get方法。外部类通过这个方法访问内部类的私有属性。

相关文章

  • java学习笔记第二天

    java修饰符 java修饰符 java语言提供了很多修饰符,主要分为下面两类: 1.访问修饰符 2.非访问修饰符...

  • Java 修饰符

    Java 修饰符 Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 修饰符用来定义类、方...

  • 日常记忆Java修饰符

    Java修饰符 Java语言提供的很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符修饰符用来定义类、方法或...

  • 2019-02-12——Java 修饰符

    在Java中,修饰符分为四种: public protected default private 关于四种修饰符的...

  • Java知识之修饰符

    Java中的修饰符 Java中的修饰符主要分为两类: 访问控制修饰符 非访问控制修饰符 访问控制修饰符分: pub...

  • java修饰符有哪些?

    java修饰符有哪些? Java语言提供了很多修饰符,主要分为以下两类: 1、访问修饰符; 2、非访问修饰符。 (...

  • Java中访问修饰符和构造函数的一点总结

    Java访问修饰符 Java用于类的修饰符(2个)和限定符(2个) 注意:内部类可以拥有更多的访问修饰符 Java...

  • java基础-static

    概述 static 在java体系里的地位:java语言的一个修饰符,属于非访问修饰符,所谓访问修饰符就是控制访问...

  • 关于Java语言中那些修饰符

    一.在java中提供的一些修饰符,这些修饰符可以修饰类、变量和方法,在java中常见的修饰符有:abstract(...

  • java的访问修饰符

    一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符...

网友评论

    本文标题:2019-02-12——Java 修饰符

    本文链接:https://www.haomeiwen.com/subject/brwheqtx.html