Java-继承、多态

来源:互联网 发布:java post 编辑:程序博客网 时间:2024/05/21 22:23

继承

概念: 表示的是类与类之间的关系,是一种“is  a”的关系。

语法规则:class 子类 extends 父类{ ...}

继承中初始化顺序:

父类中的成员变量,父类的构造函数,子类的成员变量,子类的构造方法;


final关键字

修饰类,则该类不能被继承;

修饰方法,则该方法不能被重写;

修饰变量,则变量变成常量;

修饰属性,则要么在声明时初始化,要么在构造函数中初始化,如果不初始化,则会报错


super关键字

用于访问父类的属性;

应用:1、创造子类对象的时候必须调用创建父类的构造方法,如果没有显示的调用,则会隐式的调用(super())父类的无参的构造方法。

2、如果子类构造方法要显示的调用父类的构造方法,则必须把super()放在第一行;

3、如果父类自定义了一个有参的构造方法,而且子类没有显式的调用父类的构造方法,则编译会报错。


Object类

所有类的基类。基类中的几个常用方法(一般实体类中最好都要对它们进行重写)

toString():没有重写 toString 方法的情况下直接用 print 打印对象,输出的是对象的地址,所以一般实体类都要重写该方法。

equals():比较的是两个对象的地址是否一样。如果要比较两个对象的内容一样,则需要重写。使用:a.equals(b);//比较两个对象的应用是否一样


多态

对象的多种形态。分为引用的多态和方法的多态。

引用多态:1、父类的引用指向本类的对象;2、父类的引用指向子类的对象

方法多态:重载父类方法


引用类型转换

1、向上类型转换:隐式自动转换,小类转换为大类,不存在风险。

2、向下类型转换:显示(强制)类型转换,大类转换为小类,会存在溢出风险。在强制类型转换时,可以先用instanceof关键字判断是否可以进行强制类型转换。

什么时候用多态:
在定义一个方法时,将方法的形参尽量定义为一个接口,或者是一个抽象类,这样当这个方法被掉用时,需要传入数,这时候,你就可以有选择性的传递参数了,你可以传递实现这个接口的任意一个类,这样程序的可扩展性就是最好的

抽象类

作用:约束了子类必须实现的一些方法,只含有方法名,但是不要求其具体的实现细节,只是用于制定一些规则,用abstract关键字修饰类和抽象方法。含抽象方法的一定是抽象类,但是抽象类可以不含抽象方法。在子类继承抽象类时,一定需要实现其中的抽象方法。抽象类不能进行实例化,但是可以指向实例化的子类对象,用来实现多态。当我们只是想用父类的一些方法,而不需要父类的其他变量时,可以考虑用抽象类代替普通的类。

接口

类是一种具体的实现体,而接口定义了某一批类必须遵守的规范,它不需要知道这些类的内部数据和具体的方法的实现细节,只是规定了这些类必须提供的某些方法。一般被继承,所以一般为public,不能为protected,private。基本语法格式:

[修饰符] interface 接口名 [extends 父接口1 父接口2]

{

零到多个常量定义;

零到多个抽象方法的定义;

}

通过定义可以看出,接口其实是抽象的,常量一般是用final、static、public修饰,方法也是用abstract修饰。类继承接口利用implements关键字

接口命名一般前面加个I用以区分类。使用方式1是通过接口的引用,实现不同类之间的相似的功能。使用方式2是和内部类进行配合使用。




0 0