类
作用域
private:私有,只可在类中被访问
public:公共,可在类外被使用
protect:保护,在同一包中被使用
通过对象能访问的成员只能时类中定义的public成员
构造方法
public class time1{
public time1(int param1){
hour = param1;
}
public time1(int param1,int param2){
hour = param1;
minute = param2;
}
}
this、set、get
this定义为当前对象的引用(如参数名和成员变量名相同时,通过this显示访问对象的成员变量)
public void setXXX(type value){this.XXX = value;}public type getXXX(){return XXX;};
内存管理
java在对象不再被引用的时候,会被视为“垃圾”,,通过Java的垃圾回收器回收该对象占有的空间。
若希望将对象销毁,可将变量指向null,Object不被引用则自动销毁。
Package
Package 包名;
public ......
import com.zwj.testPackageX.Time1;
import com.zwj.testPackageX.*;
继承、派生
父类为子类的一般化,子类为父类的具体化(学生->大学生->本科生、硕士生)。在继承中子类仅可访问超类的public与protect成员
继承有单继承与多继承,尽量使用单继承
class 本科生 extends 大学生{
......
}
使用父类被重写的方法:super.超类同名方法(params)
@override:1.帮助自己检查是否正确的复写了父类中已有的方法。2.告诉读代码的人,这是一个复写的方法。
在手工重写父类的方法时,容易把方法的参数记错,如果此时不加@Override的话,编辑器就不会提示你。原本的重写就变成了重载方法
继承下的构造
创建子类对象时,先调用直接父类的构造方法,然后再调用子类本身的构造方法。
若有显示的构造方法(super(paramList)必须写在子类构造方法的第一行),若无,系统默认调用基类的无参数构造方法(如果子类构造方法中既没有显示调用基类构造方法,而基类又没有无参数的构造方法,则编译出错)
finalize:父类构造->子类构造->子类finalize->父类finalize
多态
包括抽象方法抽象类、接口、嵌套类、内部类。
继承的层次:不可将超类对象赋给子类,但可以将子类赋给超类基类。(子类可能有新的method)
抽象类abstract
类是一组同类型对象的描述,一组类的公共特性可用超类描述,一组超类的公共特性或接口可用抽象类描述
抽象类包括一个或多个抽象方法(静态方法不可为抽象方法),抽象类不可实例化,但可用抽象超类来声明引用变量
public abstruct class shape extends Object{
public double getArea(){
return 0.0;
}
public double getVol(){
return 0.0;
}
public abstract String getName();
}
public class Point extends Shape{
...
public String getName(){//抽象类的具体实现
...
}
public String toString(){//超类Object里toString方法的重写
...
}
}
接口Interface
用于声明一组类的公共操作的接口,有一组常量和一组抽象方法组成(接口不包括边拉你个和有具体实现的方法)
接口的实现:类中应该提供在接口中所有方法的实现,否则则是抽象类不可实例化
public interface Shape{
public double getArea();
public double getVol();
}
public class point extends Object implements Shape{
...
public double getArea(){
...
}
public double getVol(){
...
}//全部实现interface里的
}