封装
静态域:将域定义为static,每个类只有一个这样的域。这个类的所有实例共享一个静态域。它属于类,不属于任何独立的对象
静态方法:不能向对象实施操作的方法,可认为静态方法是没有this参数的方法。建议使用类名来调用静态方法。
使用静态方法的情况:
一个方法不需要访问对象状态,其所需参数都是通过显示参数提供。
一个方法只需要访问类的静态域。
继承
两个类之间有明显的is-a关系。在Java中,所有继承都是共有继承。已存在的类称为超类,新类称为子类。
若超类中的方法对子类并不适用,需要为子类提供一个新的方法来覆盖超类中的方法。
若需要访问超类中的私有域,必须借助于公有的接口,可用super.超类方法名()解决问题
由于子类的构造器不能访问超类的私有域,必须利用超类的构造器对这部分私有域进行初始化。使用super调用构造器的语句必须是子类构造器的第一句。
如果子类的构造器没有显式调用超类中的其他构造器,则会默认调用(无参)。
Java不支持多继承
多态
对象变量是多态的,可以将一个子类的对象赋给超类变量。一个超类可以引用他的任何一个子类。但是不能将一个超类的引用赋给子类变量
有时希望阻止某个类定义子类,不允许扩展的类称为final类。
类中的方法也可以被声明为final,这样做,子类就不能覆盖这个方法。
较高层次的类可能比较抽象,可定义抽象类。包含一个或多个抽象方法的类本身必须被声明为抽象的。
除了抽象方法,抽象类还可以包含具体数据和具体方法。
抽象方法充当着占位的角色,他们的实现在子类中。
不含抽象方法也可以声明抽象类,抽象类不能被实例化,但可以定义一个非抽象子类的对象。
Object:所有类的超类
接口
接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。