面向对象2---继承

第一章、继承

一、         概述

1、 概念

类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。同时子类也可以定义自己的成员变量和成员方法。

注意:私有的属性和方法不能继承;

2、什么时候使用继承

不能为了继承某个功能而随意进行继承操作, 必须要符合 is a 的关系,例如苹果 is a 水果

 

3、好处

(1)继承的出现提高了代码的复用性,提高软件开发效率。

例如之前:每个类相同的代码,需要写多次,改的话需要在多个地方改;

(2)继承的出现让类与类之间产生了关系,提供了多态的前提。

4、继承的弊端:

类与类之间的耦合度过高

5、特性

5.1父子类关系

(1)类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类

(2)多个类可以继承一个父类

(3)多层继承是可以的,即一个类的父类可以再去继承另外的父类

5.2属性

5.3方法

5.4构造方法

 

 

 

二、         使用

1、 语法

格式:

class 子类 extends 父类 {}

 

2、 成员变量

(1)如果子类父类中出现不同名的成员变量

Fu类中的成员变量是非私有的,子类中可以直接访问,若Fu类中的成员变量私有了,子类是不能直接访问的。

(2)子父类中出现了同名成员变量时

在子类中若要访问父类中的成员变量,必须使用关键字super来完成。super用来表示当前对象中包含的父类对象空间的引用;

在子类中,访问父类中的成员变量格式:

super.父类中的成员变量

 

3、 成员方法

3.1代码执行过程

当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。

3.2成员方法特殊情况——重写

(一)特征:子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写;

(二)什么时候使用

当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写。

(三)注意事项

子类方法覆盖父类方法,必须要保证权限大于等于父类权限。

 

4、构造方法

(1)在创建子类对象时,父类的构造方法会先执行,为什么?

因为子类中所有构造方法的第一行有默认的隐式super();语句。

 

(2)子类中的构造方法为什么会有一句隐式的super()呢?

原因:子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作。这样,才可以使用父类中的内容。

(3)父类没有无参

方案一为在父类中添加无参的构造方法

方案二为在子类构造方法中显示调用父类的有参构造方法(常常使用),

5.多态的形式

 

 

 

 

 

 

第二章、接口

1、概述

1)是一个标准、规范------------遵守了这个标准,实现类就能干某件事------------API后

2)接口是一种数据类型(引用类型)

2、接口定义

2.1由interface定义

 2.2成员的特点:
(1)成员变量:

接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变

(二)接口中可以定义方法,方法也有固定的修饰符,public abstract

 

 

3、使用特性

3.1实例化:

接口不能被实例化,就是不能创建对象;

3.2实现类:

必须重写接口中的所有抽象方法,否则是抽象类

3.3继承和实现关系

(1)一个类可以实现多个接口,用逗号隔开;

若又继承又实现时,应先继承后实现

(2)接口可以继承接口

 

4、类实现接口

类与接口的关系为实现关系,即类实现接口

实现类的方法:

在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法,完成具体的逻辑。

 

5、好处

5.1逻辑上实现多继承

那么想想为什么要定义接口,使用抽象类描述也没有问题,接口到底有啥用呢?

接口最重要的体现:解决多继承的弊端。将多继承这种机制在java中通过多实现完成了。

 

6、接口和抽象类的区别:

相同点:

l  都不能继承其他类;

l  都不能直接实例化对象;

l  都包含抽象方法,其子类都必须覆写这些抽象方法;

区别:

l  (1)方法:

抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;

l  (2)继承关系:

一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

l  (3)应用

抽象类是这个事物中应该具备的你内容, 继承体系是一种 is..a关系

接口是这个事物中的额外内容,继承体系是一种 like..a关系

 

二者的选用:

l  优先选用接口,尽量少用抽象类;

l  需要定义子类的行为,又要为子类提供共性功能时才选用抽象类;

 

转载于:https://www.cnblogs.com/mhy666/p/9347319.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值