那个小白说他还没搞懂类和对象,我一怒之下把这篇文章扔给了他(2)

简介: 那个小白说他还没搞懂类和对象,我一怒之下把这篇文章扔给了他

最好的办法就是为 Pig 类追加 getter/setter 方法,就像下面这样:


public String getColor() {
    return color;
}
public void setColor(String color) {
    this.color = color;
}

通过 setColor() 方法来修改,通过 getColor() 方法获取状态,它们的权限修饰符是 public 的。


为什么要这样设计呢?可以直接将 color 字段的访问权限修饰符换成是 public 的啊,不就和 getter/setter 一样的效果了吗?


因为有些情况,某些字段是不允许被随意修改的,它只有在对象创建的时候初始化一次,比如说猪的年龄,它只能每年长一岁(举个例子),没有月光宝盒让它变回去。


private int age;
public int getAge() {
    return age;
}
public void increaseAge() {
    this.age++;
}



你看,age 就没有 setter 方法,只有一个每年可以调用一次的 increaseAge() 方法和 getter 方法。如果把 age 的访问权限修饰符更改为 public,age 就完全失去控制了,可以随意将其重置为 0 或者负数。


访问权限修饰符对于 Java 来说,非常重要,目前共有四种:public、private、protected 和 default(缺省)。


一个类只能使用 public 或者 default 修饰,public 修饰的类你之前已经见到过了,现在我来定义一个缺省权限修饰符的类给你欣赏一下。


class Dog {

}

1

2

哈哈,其实也没啥可以欣赏的。缺省意味着这个类可以被同一个包下的其他类进行访问;而 public 意味着这个类可以被所有包下的类进行访问。


假如硬要通过 private 和 protected 来修饰类的话,编译器会生气的,它不同意。


image.png


private 可以用来修饰类的构造方法、字段和方法,只能被当前类进行访问。protected 也可以用来修饰类的构造方法、字段和方法,但它的权限范围更宽一些,可以被同一个包中的类进行访问,或者当前类的子类。


可以通过下面这张图来对比一下四个权限修饰符之间的差别:


image.png


同一个类中,不管是哪种权限修饰符,都可以访问;

同一个包下,private 修饰的无法访问;

子类可以访问 public 和 protected 修饰的;

public 修饰符面向世界,哈哈,可以被所有的地方访问到。



好了,我亲爱的读者朋友,本文到此就打算戛然而止了,有什么不满意的,尽管留言,我保证给你上墙的机会。


感谢阅读


我在上大专的时候就学了 Java,但由于基础差,学历低的原因在工作中吃了不少亏。没办法,只能后天弥补。输出倒逼输入,于是我就开启了自己的逆袭之路,不断地学习 Java 核心知识,并将所有心得都写成了文章,发布在博客平台上,没想到,这种坚持不懈的努力成就了一个更好的自己。


如果你也不甘平庸,不想被学历限制自我,那就请和我一起打怪进阶吧!


相关文章
|
存储 Cloud Native Linux
QToolButton几个小知识点总结
QToolButton几个小知识点总结
|
5月前
|
JSON 网络协议 Shell
一文搞懂:【Day29】Soket编程
一文搞懂:【Day29】Soket编程
35 0
|
6月前
|
算法 C语言
883重要知识点
883重要知识点
44 0
|
6月前
|
数据采集 监控 数据可视化
智慧矿山知识点总结
智慧矿山知识点总结
100 0
|
编译器 C++
C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(二)
C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(二)
|
编译器 C++
C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(一)
C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(一)
C++ 类与对象中类的深入知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏(一)
|
编译器 C++
【C++系列P3】‘类与对象‘-三部曲——[基础知识](1/3)
【C++系列P3】‘类与对象‘-三部曲——[基础知识](1/3)
|
存储 自然语言处理 算法
刚学完c没掌握完的知识,不会学c++的时候还没搞懂吧?
c++既可用于基于过程的结构化程序设计,又可用于面向对象的程序设计,是一个功能强大的混合型程序设计语言。
131 0
刚学完c没掌握完的知识,不会学c++的时候还没搞懂吧?
|
数据采集 人工智能 大数据
知识点总结(1)
知识点总结(1)