Java基础学习(5)
接口、继承与多态
类的继承
在java中使用extends关键字来标识两个类的继承关系。
Calss Test()
{
public Test()
{
}
protected void doSomething()
{
}
Protected Test dolt()
{
return new Test();
}
}
class Test2 extends Test{
public Test2()
{
super();
super.doSomething();
}
public void doSomethingnew()
{
}
public void doSomethxing()
{
}
protected Test2 dolt()
{
return new Test2();
}
}
总结:
1)在子类构造方法中可以调用父类的构造方法来构造子类,用super()实现;
2)在子类中使用super关键字调用父类的方法;
3)super关键字只能调用public和protected修饰的成员方法;
4)在子类中可以重写父类的方法,包括方法的权限修饰符,返回值,参数类型及个数,实现内容。
5)如果仅仅是修改实现内容,称为重构。
6)重写父类方法不能降低方法的修饰权限范围。
7)在继承机制中,java编译器会在子类构造方法中先调用父类的无参构造方法,对于有参构造方法,只能通过super()显示调用。
技巧:如果使用finalize()对对象进行清理,需要确保子类的finalize()方法的最后一个动作是调用父类fianlize(),以保证当垃圾回收对象占用内存时,对象的所有部分都能被正常终止。
Object类
1)在java中,所有的类都直接或间接的继承自java.lang.Object类。
2)任何类都可以重写Object中类,但是getClass(),notify(),notifyAll(),wait()等方法不能被重写。
3)常用的toString()和equals();
对象类型的转换
向上转型
由较具体的类到较抽象的类转换;即把子类对象赋值给父类类型的变量。
向下转型
由较抽象的类到较具体的类转换;即把父类对象赋值给子类类型的变量。
使用instanceof操作符判断对象类型
在向下转型时,如果父类不是子类的实例,会发生ClassCastException异常,所以在转换前要判断父类是否是子类的实例,通常使用instanceof操作符来完成。
调用方式:
myobject instanceof ExampleClass
返回true,则myobject 是ExampleClass的实例;
返回false,则myobject 不是ExampleClass的实例;
方法的重载
构成重载的条件:
1)参数类型不同,构成重载
2)参数个数不同,构成重载
3)参数顺序不同,构成重载
多态
根据向上转型原则,通过父类成员方法实现不同的子类。
多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
抽象类和接口
抽象类
抽象类和抽象方法必须用abstract关键字修饰
抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类
抽象类不能实例化,抽象类有构造方法,但是不能实例化
抽象的子类
a:如果不想重写抽象方法,该子类是一个抽象类。
b:重写所有的抽象方法,这个时候子类是一个具体的类。
接口
接口的特点:
A:接口用关键字interface表示
interface 接口名 {}
B:类实现接口用implements表示
class 类名 implements 接口名 {}
C:接口不能实例化 注意接口的实例化的方式和抽象方法的是一样的
D:接口的子类
a:可以是抽象类。但是意义不大。
b:可以是具体类。要重写接口中的所有抽象方法。