Everyday Question
每日一问 2022-06-21 setter & getter setter 和 gettter 的实际意义 为什么要有setter & getter, public dot直接使用不是更方便快捷吗? 而且setter和getter最终的效果也是读写 安全:程序可以选择只读或只写或读写 灵活:如果不仅仅只是读写属性值,可以自由变换 封装:隐藏内部实现细节 健壮:便于维护,扩展 由上一问,为什么public是不安全的呢? 如果写sdk的话,那么有些数据是不想对外修改的,这时候public的作用就体现出来了。如果只是业务代码则,权限体现的不太大。 扩展:Java的四大特性 - 直接粘贴 封装 What:隐藏信息,保护数据访问。 How:暴露有限接口和属性,需要编程语言提供访问控制的语法。 Why:提高代码可维护性;降低接口复杂度,提高类的易用性。 抽象 What: 隐藏具体实现,使用者只需关心功能,无需关心实现。 How: 通过接口类或者抽象类实现,特殊语法机制非必须。 Why: 提高代码的扩展性、维护性;降低复杂度,减少细节负担。 继承 What: 表示 is-a 关系,分为单继承和多继承。 How: 需要编程语言提供特殊语法机制。例如 Java 的 “extends”,C++ 的 “:” 。 Why: 解决代码复用问题。 多态 What: 子类替换父类,在运行时调用子类的实现。 How: 需要编程语言提供特殊的语法机制。比如继承、接口类、duck-typing。 Why: 提高代码扩展性和复用性。 2022-06-22 编译&反编译 编译:源码 -> 字节码 反编译:字节码 -> 源码 什么是字节码,采用字节码的好处是什么? 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。 ...