Java: Generics
为何需要范性先创建一个包 generics,然后创建一个类 List,它的实现如下:
123456789101112public class List { private int[] items = new int[10]; private int count; public void add(int item) { items[count++] = item; } public int get(int index) { return items[index]; }}
这里我们忽略很多细节,比如要检查 index 的范围。
现在我们可以去主函数中为刚才创建的类构造对象,并对其进行相关操作。
但可能之后我们又会需要一个 list 去记录用户,因此我们又得创建一个类。
因为之前创建的 List 类只能用于存储整型数。
所以我们需要范性来解决这个问题。
A Poor Solution简单的方法如下:
123456789101112public class List ...
Java: Exceptions
什么是异常首先,添加一个包
右击 src 下的子文件,即代码文件所在的文件夹
选择 New,Package
输入包名
在这个包下创建新的类 ExceptionsDemo
123456789public class ExceptionsDemo { public static void show() { sayHello(null); } public static void sayHello(String name) { System.out.println(name.toUpperCase()); }}
在主程序中调用
123456public class Main { public static void main(String[] args) { ExceptionsDemo.show(); }}
运行后将会报错
Exception in thread “main” java.lang.NullPo ...
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
在上方菜单栏 ...




