zoukankan      html  css  js  c++  java
  • 面向对象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  需要定义子类的行为,又要为子类提供共性功能时才选用抽象类;

    向成为千里马奋斗,为伯乐打call;
  • 相关阅读:
    Javascript调用C#后台方法及JSon解析
    ul 仿 table 循环滚动
    windows服务
    simple demo how to get the list of online users
    IIS 4.0配置
    在线
    C学习笔记-多源文件的编译
    C学习笔记-多源文件的编译
    C学习笔记-函数
    C学习笔记-函数
  • 原文地址:https://www.cnblogs.com/mhy666/p/9347319.html
Copyright © 2011-2022 走看看