Contents
这一章节,作者主要想通过一系列的对话,让你了解到 Java 中基本类型是什么东东(只介绍了 int, boolean 类型)。以及如何使用 Java 自定义类型。
类型是什么?
类型是一类值的集合的命名
SeasoningD
1 2 3 4 5 6 7 8 9 | abstract class SeasoningD{} // 调味品
class Salt extends SeasoningD{} // 盐
class Pepper extends SeasoningD{} // 胡椒粉
class Thyme extends SeasoningD{} // 百里香
class Sage extends SeasoningD{} // 鼠尾草
|
上面的代码就定义了 SeasoningD 类型,以其它的四个变体类型。
虽然四个变体类型没有定义 构造函数 ,但是 Java 会自动添加一个默认的构造函数。
PointD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | abstract class PointD{}
class CartesianPt extends PointD{ // 笛卡尔
int x;
int y;
CartesianPt(int _x, int _y){
x = _x;
y = _y;
}
}
class ManhattanPt extends PointD{ // 曼哈顿
int x;
int y;
ManhattanPt(int _x, int _y){
x = _x;
y = _y;
}
}
|
PointD 的两个变体类型就手动添加了构造函数,因为它们需要有额外的属性传入构造函数。
当使用 new 关键字时, Java 会通过调用类的构造函数来生成其对应的实例。
对抽象类直接使用 new 关键字是不行的,因为抽象类是一个未完全定义的类,无法实例化。
NumD
1 2 3 4 5 6 7 8 9 10 | abstract class NumD{}
class Zero extends NumD{}
class OneMoreThan extends NumD{
NumD predecessor;
OneMoreThan(NumD _d){
predecessor = _d;
}
}
|
abstract 、 class 、 extends 各代表什么?
abstract 引入了数据类型
class 引入了变体类型
extends 将以上两者联系起来
LayerD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | abstract class LayerD{}
class Base extends LayerD{
Object o;
Base(Object _o){
o = _o;
}
}
class Slice extends LayerD{
LayerD l;
Slice(LayerD _l){
l = _l;
}
}
|
comments powered by Disqus