博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从实践认识修饰符
阅读量:4682 次
发布时间:2019-06-09

本文共 2598 字,大约阅读时间需要 8 分钟。

从实践认识修饰符

1 修饰符分类

说到修饰符,大家都知道有private deafult protect public,说到它们的区别,相信大家脑海会出现一张图。

  同一个类 同包非子类 子类
private
default
protected
public

那么怎么从代码层面解释呢,学东西不能停留在理论层面,毕竟只是一份实践的工作。所以请看下面讲解,毕竟实践才是检验真理的唯一标准,说白了就是写一些demo,验证一下,工作中我们不了解某个方法或者某个类的时候,本人推荐写一些demo,做一些test,本人觉得这是技巧之一。

2 代码展示

本实例访问方法只有两种

  1. 创建对象访问,形成组合关系
  2. 继承类,形成继承关系

2.1 引入必要的maven

写demo验证自己想法时候,推荐使用test框架,不同每次都写一个main方法,只要一个注解@test就能解决问题

junit
junit
4.12
compile

也可以使用slf4j框架来打印信息

org.slf4j
slf4j-api
1.7.5
org.slf4j
slf4j-simple
1.6.4

也可以使用lombok框架,实现注解@getter和@setter代替getter方法和setter方法

org.projectlombok
lombok
1.16.16

2.2 private

需要创建对象 调用类中属性

2.2.1 实例

package classtest;import lombok.Getter;import lombok.Setter;import org.junit.Test;/** * @Author buer * @create 2019/4/28 10:06 * @description 父类 */@Getter@Setterpublic class Animal {    public int id = 1;    private String name="chen";    protected String parent = "parent";    @Test    public void eat(){        Animal animal  = new Animal();        System.out.println(animal.name);    }}

2.2.2 结果

chen

ps:贴图很麻烦 就贴字了

2.2.3 结论

在本类创建对象可以直接访问private属性字段

2.3 default

创建对象,访问属性

2.3.1 实例

package classtest;@Getter@Setterpublic class Classtest {    @Test    public void defaultTest(){        Animal animal  = new Animal();        System.out.println(animal.name);    }}

另一个类name属性改变--》protected

package classtest;@Getter@Setter public class Animal {    private int id;    String name="chen";    protected String parent;}

2.3.2 结果

chen

2.3.3 结论

在同一个包中创建对象可以直接访问,不同包下创建对象不能访问default 默认属性字段,例子省略

2.4 protected

继承父类,不需要创建父类对象,直接访问protected属性字段

2.4.1 实例

package butong;import classtest.Animal;import org.junit.Test;/** * @Author buer * @create 2019/5/4 14:37 * @description */public class Animalbutong extends Animal{    @Test    public void defaultTest(){        System.out.println(parent);    }}

2.4.2 结果

chen

2.4.3 结论

在子类中可以直接进访问父类字段,不需要创建对象

2.5 public

在不同包以及非子类关系下,创建对象可以访问public属性字段

2.5.1 实例

test属性是public

package butong;import classtest.Animal;import org.junit.Test;/** * @Author buer * @create 2019/5/4 14:37 * @description */public class Animalbutong {    @Test    public void defaultTest(){        Animal animal = new Animal();        System.out.println(animal.test);    }}

2.5.2 结果

chen

2.5.3 结论

在不同包以及非子类关系下,创建对象可以访问public属性字段

转载于:https://www.cnblogs.com/chenzhuantou/p/10808585.html

你可能感兴趣的文章
Node.js 调用 restful webservice
查看>>
DirectX11--HR宏关于dxerr库的替代方案
查看>>
NOI 2005 瑰丽华尔兹(三维DP + 单调队列优化)
查看>>
【并查集模板】 【洛谷P2978】 【USACO10JAN】下午茶时间
查看>>
POJ3664
查看>>
一句话介绍python线程、进程和协程
查看>>
App的登录注册相关接口
查看>>
ubuntu普通用户使用wireshark的权限问题
查看>>
Spring4(6)——对DAO(JDBC)的支持(JdbcDaoSupport)
查看>>
Python学习笔记(3)for循环和while循环
查看>>
C#整理——深浅度复制
查看>>
服务器部署docker lnmp环境
查看>>
leetcode -day28 Unique Binary Search Trees I II
查看>>
Android 绑定类型服务---绑定服务
查看>>
小技巧之padding-bottom实现等比例图片缩放
查看>>
JAVA编码规范
查看>>
C# DllImport用法和路径问题
查看>>
arm linux下启动ftp服务
查看>>
IoC模式(依赖、依赖倒置、依赖注入、控制反转)
查看>>
[AHOI2005] SHUFFLE 洗牌
查看>>