封装性:
1.所有的变量私有化,写一些set-get方法供外面操作这些属性
2.写一些构造方法,供外面在创建对象时,直接把数据封装到对象中
在构造器中调用构造器,用this();
如:public Mydate(int year,int month,int day){
this.year=year; this.month=month; this.day=day;
} public Mydate(Mydate d){
this(d.year,d.month,d.day);
}
类的访问权限:只有两种,公有和缺省
类中成员访问权限:有四种:私有,缺省,保护,公有
private:只有当前类可以访问
缺省:只有当前包的类可以访问
protected:当前包的所有类或其他包中是子类的可以访问
public:任意类都可以访问
类模板中静态的东西不拷到堆中,静态的东西是属于类的,是所有对象公共的,非静态的东西属于对象,在堆中操作。
静态块:在第一次使用类模板时调用,且只调用一次,如果要在第一次使用类模板时执行某些代码,如给静态变量赋值,要用多行代码,则需要使用静态块。
深拷贝:让所有的变量赋值都达到基本数据类型赋值的深度
浅拷贝:存在引用赋值
继承:
子类覆盖父类方法,子类的权限不能低于父类的权限。如果父类的权限为public则子类的也要为public
覆盖方法的约束:前(权限)不能小,后(异常)不能大
多态性:
编译时多态:看类型(等号左边)
运行时多态:看内存(等号右边)new谁调谁(先看当前类,后看父类),首先要编译时多态通过,即父类和子类中都有同一个函数。
抽象性:只能当父类,不能new对象,不能实例化
如果一个类中包含抽象方法,则这个类一定是抽象类
接口:完全抽象类=(常量+抽象方法)
接口可以继承多个接口
一个类要实现接口,必须把接口里的所有抽象方法都实现,否则要申明为抽象类,实现类即为子类,权限不能低于父类。
接口里的都是静态的,所以只要类模板中有一个,可以作为公共的函数,常量,都是公共的,可以省内存。
内部类:不能直接new对象,要用外部类的对象.new();