Java: Interfaces
What are interfaces ?We use interfaces to build loosely coupled, extensible and testable applications.
我们使用接口构造松散耦合的,可扩展,可测试的应用程序。
假设 A 是子类,B 是父类,通过 private 关键字来修饰某些变量可以减少 A 与 B 之间的关联,但这不足够,接口可以将 A 与 B 完全解偶。
接口和类很类似,但他只包含方法的声明,没有实现。
接口定义了需要做什么。
类定义了如何去做。
Tightly coupled code假设我们创建以下两个类:
TaxCalculator
1234567891011public class TaxCalculator { private double taxableIncome; public TaxCalculator(double taxableIncome) { this.taxableIncome = taxableIncome; } public d ...
Java: Inheritance
Object ClassConstructors创建方式:从上方菜单栏找到 Code,然后选中 Generate,快捷键 command + N
在一个“类”中代码的排序为:
Fields,即各种参数
Constructors
All the public methods
如果父级类的 constructor 有参数,则子级类在构建时要用到 super 函数来传递所需要的参数。
Access ModifiersPublic members 在类之外也是可以使用的。
Private members 只能在类内调用,不能被继承。
Protected members 是在同一个包内可用,但可以在不同包的子类中使用。过于复杂,不常用,也应避免使用。
如果没有声明,则是 package private,则只能在同一个包内使用,即使是不同包的子类也不能继承。过于复杂,不常用,也应避免使用。
Overriding Methods在子类中重写父类的方法。
注意与重载(overloading)区分,重载指的是通过不同的 signature 来实现同一个 method。
在重写的方法前要进行备注,备 ...
Java: Refactoring to an Object-oriented Design
提取“类”
选中要提取的方法名
在上方菜单栏找到 Refactor 并选择 Refactor This,快捷键 control + T
在弹出的选项栏选择 Move,快捷键 F6
在弹出的菜单栏选择移动的目的地址
在 Member 中选择要被移动的项
在 Visibility 中选择对应的选项,一般选择 Public
点击 Refactor
Constructor
在上方菜单栏找到 Code 并选择 Generate,快捷键 command + N
在弹出的选项栏选择 Constructor
在弹出的菜单栏中选择要初始化的字段
删除重复参数
选中要提取的方法名
在上方菜单栏找到 Refactor 并选择 Refactor This,快捷键 control + T
在弹出的选项栏选择 Change Signature,快捷键 command + F6
在弹出的菜单栏中选择要删除的参数
点击下方的减号将其删除
点击 Refactor
Find Usages
选中“类”后右击
选择 Find Usages, 快捷键 option + F7
Extract a field
在上方菜单栏 ...
Deep Learning: Diffusion Models - Part 2
IntroThe goal of diffusion models is: while you have a lot of images and you want to have more, you can use images you have as training data, and a diffusion model, which is a neural network, serves as the generator.
In order to make images useful to a neural network, we need to train the network waht these images are about, including fine details, general outlines and everything in between. One way to do that is adding different noise levels to the training data. During the noising process, bo ...
Java: Class
Creating Classes
打开左侧的 Project 面板
右击 main class 的商机文件夹,选择 New -> Java Class
命名时每个单词的首字母大写
1234567891011public class TextBox { public String text = ""; public void setText(String text) { this.text = text; } public void clear() { text = ""; }}
Creating Objects123456789public class Main { public static void main(String[] args) {// TextBox textBox1 = new TextBox(); var textBox1 = new TextBox ...