清淨
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java

    • Java 基础
  • 框架

    • Flyway
    • MapStruct
    • Spring Cloud
  • 中间件

    • Elasticsearch
    • Redis
    • RabbitMQ
    • Kafka
  • 三剑客

    • HTML
    • CSS
    • JavaScript
  • 进阶

    • jQuery
    • ECMAScript6
    • TypeScript
  • Vue

    • Vue2
    • Vue3
    • VuePress
  • Linux
  • Jenkins
  • Maven
  • MySQL
  • 插件工具
  • 代码集成
  • 其它

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • 设计模式
迁移日志
订阅号
微信订阅号
微信订阅号
GitHub
  • Java 基础

    • 简介
    • 第一个 Java 代码
    • 数据类型
    • 变量
    • 进制
    • 导包
    • 输入
    • 数据类型转换
    • 运算符
    • 随机数
    • 流程控制
    • 访问修饰符
    • 面向对象
    • 重载与重写
    • 程序执行流程
    • 方法参数的值传递
    • 多线程
    • Java 常用类
    • 枚举
    • 注解 Annotation
    • 集合
    • 泛型
    • IO
    • 网络编程
    • 反射
    • lambda
    • 类加载
    • 正则表达式
    • 字符集

访问修饰符

修饰符本类同包子类其它
private√xxx
默认√√xx
protected√√√x
public√√√√

上面的意思是说,通过类的实例直接访问属性或方法(而不是使用 set 或 get 等方法来访问)。

默认

  • A.java

    package com.dysy.entity;
    
    public class A {
        int abc;
    }
    
  • B.java

    package com.dysy.entity;
    
    public class B {
        
        public void print() {
            // 直接访问(没有通过 get 方法访问变量 abc)
            System.out.println(new A().abc); // 0
            // 以下就是错误的理解
            // System.out.println(abc);
        }
    }
    

protected

  • A.java

    // 注意包名
    package com.dysy.entity1;
    
    public class A {
        int number;
        protected int number2;
        public int number3;
    }
    
  • B.java

    // 注意包名
    package com.dysy.entity2;
    
    public class B extends A {
        private void test() {
            System.out.println(number);
            System.out.println(super.number);
            System.out.println(this.number);
            System.out.println(number2);
            System.out.println(super.number2);
            System.out.println(this.number2);
            System.out.println(number3);
            System.out.println(super.number3);
            System.out.println(this.number3);
        }
    }
    
想要编辑此页?
上次更新: 2023/6/2 17:30
贡献者: djf, Junfeng Dai
←流程控制面向对象→
[ 纸上得来终觉浅绝知此事要躬行 ]
Copyright © 2021-present Junfeng Dai
蜀ICP备2021009537号