第四讲:类,包和接口

类,字段,方法:
类包含fields和methods;初始化构造方法;函数重载。
成员变量(字段)和函数的调用使用 . 运算符,不存在指针,所以都是引用。
this字段的使用:区分成员变量和局部变量;内部调用构造方法(如声明特定对象);。。。
http://www.weixueyuan.net/view/5988.html

类的继承:
extends 单继承 默认继承java.lang.xxx
继承了所有的东西。
覆盖,@override,重载,新增。
批判性的继承,访问父类成员变量和成员函数使用super。
注意默认构造函数在书写了具体构造函数后就不会自动生成了。
子类对象可以赋给父类变量。

包:
作用1:和文件路径相同,实际是为了解决名字冲突 ???越来越发现classpath理解还不行,周末得搞下。。。
作用2:当然其名字是基于classpath来的,不是绝对路径。同个包里面的类默认公开,都可以互相访问,注意也不含嵌套的哈。没有private这些说法???当然是有的,下节课有讲。
注意1:*只包含当前包的class,嵌套的不包括。
用到了哪些包都要写出来!

访问控制符:
针对类成员的限制,类只有public和不加public,java就是继承性的语言,类你跟谁在那私有呢!
private:私有,避免被随意使用
不写默认是包可访问
protected:只要是继承了的都可访问,就算位于不同包也可以访问
public:公有库,不继承都能访问。
setter和getter:防止外部对象随意访问内部数据,在访问方法里添加额外限制,如入口检查等,是一种规范 bean。

其他修饰符:
static:和C语言static含义相反,java用static表示类的属性,不属于对象。和C++相同,当然不能修饰类了。当然不能调用this来访问static了,static是共有的。
final:可以修饰所有,表示最终值,不能被修改了,可以理解为只读。编译时可以对其优化处理。必须赋初值????
abstract:修饰成员方法和类,变量肯定是不能抽象的咯。和C++相同。
static final :类似常量,必须赋初值。
这几个关键字说多了没用,但是在big工程上应该非常重要。

4.6接口(特殊的父类,类似C++纯虚函数)
类似于生活中的插座,接口的作用就是插座的作用,使得语言更加规范。
interface implements 都是pubic abstract的成员。

enum:C语言中是一个整形变量,java中是一个对象。switch case中可以用。
java8以上提供static方法和默认方法,避免重复书写。
接口中常量定义:成员变量只能有常量,其type NAME = value; 自动默认public staic final属性。