java复习第二次

继承(extends)

表明正在构造的新类派生于一个已存在的类。称为超类、基类或父类,新类称为子类。

应将最一般的方法放在超类中,更一般的方法放在子类中。

覆盖方法

在子类中,可以增加字段、方法或覆盖超类的方法,但继承不会删除任何字段或方法。

调用超类方法/构造器使用关键字super。

多态

指对象变量是多态的,指超类的任何对象的任何地方都可以使用子类对象替换。(子类对象具有子类和超类的性质,但超类对象不一定具有子类的性质)

方法调用

1.编译器查看对象的类型声明和方法名。会列举所有同名方法。

2.确定方法调用的参数进行匹配。

3.如果方法被private、final、static修饰,则编译器能准确调用(静态绑定)。

4.采用动态绑定调用方法时,虚拟机会调用与所引用对象实际类型对应的方法。优先调用子类的,若子类未定义,则调用超类方法。

阻止继承(final)

阻止继承类:将类声明为final

阻止子类覆盖方法:将方法声明为final

强制类型转换

将子类对象赋值给超类是可以的,但将超类对象赋值给子类必须进行强转。在进行强转前需使用instanceof操作符判断是否能成功强转。

抽象类

位于上层的类更具有一般性,更抽象。可使用abstract关键字将类声明为抽象。

包含一个或多个抽象方法的类本身必须声明为抽象。

抽象方法没有方法体。

抽象类可包含具体方法。(不建议这样做)

抽象类不能实例化,但可以定义一个抽象类的对象变量,但这个变量只能引用非抽象子类的实例。

object类(所有类的超类)

java中的每个类都继承object类。

可以用object类型的变量引用任何类型的对象。

equals方法(boolean)

object类中的equals方法用于检测一个对象是否等于另一个对象。(确定是否引用相等)

如果检测两个对象是否拥有相等的状态,则需重写equals方法。(若在子类中则需先调用超类的方法)

性质:自反、对称、传递、一致

hashCode(散列码)方法(int)

是由对象导出的一个整型值。无规律。两个不同的对象散列码基本不同。

此方法定义在object类中,因此每个对象都有默认的散列码,其值由对象的存储地址得出。

字符串的散列码是由内容导出的,而字符串构建器由存储地址导出。

toString方法

object类中定义,返回对象的类名和散列码。

可在类中重写打印对象状态。

接口

**接口不是类,而是对希望符合这个接口类的一组需求 **

所有方法自动为public

**绝对不会有实例字段 **

可以定义方法(无方法体)可以定义常量。

不能构造接口的对象,却能声明接口的变量,必须引用实现了这个接口的类的对象。

可使用extends扩展接口。

接口与抽象类

一个类只能继承一个父类,但可以实现多个接口。

待编辑……