java总结 第六章 使用继承 成员的覆盖 使用多态 抽象类和接口

java总结 第六章 使用继承 成员的覆盖 使用多态 抽象类和接口,第1张

一、使用继承

继承

在java中,被继承的类称为父类、基类或超类,与之对应的类称为子类或派生类。继承是通过关键字 extends 实现的,格式如下:

class 子类 extends{}

实现继承

注意:如果一个成员要被子类继承之后使用,这个成员不能是 private 类型,因为私有的成员不能在类的外部使用,当然也不能被子类使用。一般情况下,成员变量定义为 protected 类型,成员函数定义为 public 类型。

注意:

1、java不支持多重继承,一个子类只能有一个父类,不允许出现一下情况。

class 子类 extends 父类1, 父类2{}

2、在java中可以有多层继承,如A继承B,B又继承了C。此时相当于A间接地继承了C。

二、成员的覆盖

子类中成员函数的定义和父类相同是指名称相同、参数列表相同、返回类型相同。

注意:

1、将 Override 和 Overload 相区别。

2、如果在子类中定义一个名称和参数列表与父类相同的函数,但是返回类型不同,此时系统会报错。

3、在重写时,子类函数的访问权限不能比父类更加严格。例如,父类的成员函数的访问权限是public ,子类重写是就不能定义为 protected 。

4、在覆盖的情况下,如果一定要在子类中调用父类的成员函数,可以使用关键字super ,调用方法是 "super . 函数名",示例代码如下。

...
class FontDialog extends Dialog{
   private String fontName;
   public FontDialog(String title,String fontName){
       this.title=title;
       this.fontName=fontName;
}
   public void show(){
       super.show();
       Ststem.out.println("fontDialog.show()");
}
}
...

三、使用多态

多态:是面向对象的基本特征之一,也是软件工程的重要思想。

          注意:前文讲解的函数重载也是一种多态,称为静态多态,本章讲解的多态特指动态多态。

使用多态

1、函数传入的形参可以是父类类型,而实际传入的可以是子类对象。

2、函数的返回类型是父类类型,而实际返回的可以是子类对象。

父类和子类对象的类型转换
1、子类类型对象转换成父类类型

根据多态原理,子类对象无须转换就可以赋值给父类引用,示例代码如下:

Dialog dialog = new FontDialog();

2、父类类型对象转换成子类类型

严格来讲,父类类型对象无法转换成子类类型。例如下面的代码是错的:

Dialog dialog = new Dialog();
FontDialog fd = dialog;

但是有一种特殊情况,如果父类类型对象原来就是某一种子类类型的对象,则可以转换成相应的子类类型对象,此时使用强制转换即可,示例代码如下。

Dislog dialog = new fontDialog();
FontDialog fd = (FontDialog)dialog;

 四、抽象类和接口

抽象类

含有抽象函数的类称为抽象类,抽象类必须用 abstract 修饰。

注意:

1、抽象类不能被实例化。

2、抽象函数必须被重写,除非子类也是抽象类。

3、在抽象类中可以含有普通成员函数。

接口

在抽象类中可以含有普通成员函数,如果一个抽象类中的所有函数都是抽象的,也可以定义为接口。

说明:

1、接口中的方法不需要专门指明 abstract ,系统默认其为抽象函数,在接口中只能包含常量和函数。

2、接口中的成员函数默认都是 public 访问类型,成员变量默认是用public static final 标识的,所以接口中定义的变量是全局静态常量。

3、接口可以通过 extends 继承另一个接口,类通过关键字 implements 来实现一个接口。

4、一个类可以在继承一个父类的同时实现一个或多个接口,多个接口用逗号隔开。格式如下:

class 子类 extends 父类 implements 接口1,接口2,....{}

关键字 extends 必须位于关键字 implements 之前。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/723715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存