多语言展示
当前在线:1284今日阅读:19今日分享:20

Java核心技术1:如何理解接口、继承和多态

学习好继承和多态是面向对象开发语言中非常重要的一个环节,如果在程序中使用继承和多态,将使整个程序构架非常具有弹性,同时可以减少代码的冗余性。
工具/原料

ECLIPSE

一、类的继承
1

继承,其基本思想是基于某个父类的扩展,制定出一个新的之类,子类可以继承父类的原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的方法。

2

在java中使用extends关键字来标识两个类的继承关系,举例如下:在项目中分别创建Test类和Test2类,在Test类中编写成员方法doSomething()和doIt,是Test类继承Test2类,重写父类的这两个方法和父类方法,并新增doSomethingnew()方法,其中Test2类的构造方法中使用super关键字调用父类的构造方法和成员方法。

二、Object类
1

在开始使用class关键字定义类时,就应用到了继承原理,因为在java中,所有的类都直接或间接继承了java.lang.Object类。Object类是比较特殊的类,它是所有类的父类,是java类层中最高层的类。

2

在Object类中主要包括clone()/finalize()/equals()/toString()等方法,其中常用的两个方法是equals()/toString()方法,由于所有类都是Object类的子类,所以任何类都可以重写Object类的方法。以下讲述Object类中的几个重要方法。

3

1、getClass()方法getClass()方法是Object类定义的方法,它会返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称:语法如下:getClass().getname();

4

2、toString()方法toString方法的功能是将一个对象返回为字符串形式,它会返回一个string实例,在实际的应用中,通常重写toString方法,为对象提供一个特定的输出模式,当这个类转换为字符串或与字符串连接时,将自动调用重写的 toString()方法。

5

举例说明:在项目中创建ObjectInstance类,在类中重写toString()方法,并在主方法中输出该类的实例对象。

6

3、equals方法equals方法比较的是两个对象的实际内容

三、使用instenceof操作符判断
1

当在程序使用向下转型的操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException的错误,所以在执行向下转型之前需要养成一个良好习惯,就是判断父类对象是否为子类对象的实例,这个判断可以使用instenceof操作符来完成。可以使用instenceof判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。

2

instenceof语法格式如下:myobject instenceof  ExampleClassmyobject某类的对象引用;ExampleClass某个类返回值为布尔值

3

举例如下:在项目中创建Parallelogram类和3个内部类Quadrangle/Square/Anything.其中Parallelogram类和Square类继承Quadrangle类,在Parallelogram类主方法中分别创建这些类的对象,然后使用instenceof操作符判断它们的类型并输出结果

四、方法的重载
1

方法的重载就是在同一个类中允许使用一个以上的同名方法,只要这些方法的参数个数或类型不同即可。举例如下:

2

构成重载的条件:

3

在谈到参数个数可以确定两个方法是否具有重载关系时,会想到不定长参数方法。不定长方法语法:返回值 方法名(参数数据类型…参数名称)在参数列表中使用…形式定义不定长参数,其实这个不定长参数a就是一个数组,编译器会将(int…a)这种形式看做int[]a,所以在add()方法体做累加操作时使用到了for循环语句,在循环中是根据数组a的长度作为循环条件,最终将累加结果返回。

4

举例如下:

五、多态

利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用处理。

六、抽象类和接口
1

1、抽象类在解决实际问题时,一般将父类定义为为抽象类,需要使用这个父类进行多态和继承。继承树中越是上方的类越抽象。在多态机制中,并不需要将父类初始化对象,我们需要的只是子类对象,所以在java语言中设置抽象类不可以实例化对像。

2

抽象类的语法如下:public abstract classTest{      abstract  void  testAbstract();} abstract是定义抽象类的关键字

3

抽象类继承关系,如下图:

4

2、接口接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体。下图描述了各个子类继承图形后使用接口的关系。

5

接口使用interface关键字进行定义,其语法如下:public interface 接口名称{    void drwa();}public:接口可以像类一样被权限修饰符修饰,但public关键字仅限于接口在其同名的文件中被定义。interface:定义接口关键字

6

一个类实现一个接口可以使用implements关键字,举例代码如下:public class Paralleogram extends Quadrangle implements 接口名称{}

7

举例说明:

8

3、接口与继承:我们知道在java中不允许多重继承,但使用接口就可以多重继承,因为一个类可以同时实现多个接口,这样可以将所有需要继承的接口放置在implements关键字后并用逗号分开。

9

多重继承的语法如下:class 类名implements 接口1,接口2,接口3,...,接口n。举例说明:在定义一个接口时使该接口继承另一个接口。interface 接口1{}interface 接口2 extends接口1{}

推荐信息