Java中所有类来自Object
类之间关系
依赖 一个类的方法使用或操纵另一个类的对象 ,但软件工程要求尽量减少耦合
聚合 类A的对象包含类B的对象 订单中有许多商品
继承 更特殊的类与一般的类
构造器(构造函数)与类名相同 要想构造对象 要在construct 前+new
希望对象多次使用 将对象存放在变量中 对象变量并没有实际包含一个对象 它只是引用一个变量 类似 C++的对象指针 Java null引用对应C++ NULL指针
所有Java对象存储在堆中
Java 必须使用clone方法获得对象的完整副本 C++ 支持复制构造器 和赋值运算符实现对象的自动复制
C++ 带有const后缀是访问器 无则是更改器 Java 无明显语法区别
完整程序会有多个类 , 其中只有一个类有main方法
1,多个源文件可使用通配符 2,Java可以认为内置make功能 (自动搜索,更新后自动重新编译)
对象中的数据称为实例字段 不要在构造器中定于与实例字段同名的局部变量
null 表示没有引用任何对象。 类似于“索引越界”异常:对null值应用一个方法。为了一开始就不导致异常有两种解决方法 ,1 宽容型 把null参数转换为一个适当的非null值
if( n == null) name = “unknown”;else name = n
Object便利方法 name = Objects.requireNonNull(n,“unknow”)
2 严格型 干脆拒绝null参数
Objects.requireNonNull(n,“the name cannot be null”)
name = n
如果要接受一个对象引用作为构造参数 就要问问自己:是不是真的希望接受可有可无的值。如果不是那么“严格型”方法更合适
Java中所有方法必须在类内部定义,但并不表示它们是内联方法,这由JVM决定。 C++ 如果在类内部定义方法 自动成为内联
static字段 属于类 而不属于单个的对象 静态方法可以访问静态字段