7.继承相关(extends、super、override)

1.继承概念

    一个类得到了另外一个类的成员变量和成员方法。

只支持单继承,不允许多继承。

是面向对象最重要的特征之一,可以减少类定义的重复代码,重复放在父类。

2.作用

减少类定义等重复代码

3.语法特点

子类继承父类可以得到父类的成员变量和成员函数,同时子类还可以在此基础上扩展。

class teacher extends person{}

teacher是子类,person是父类。

---------------------------------------------------------------------------------------------

4.生成子类对象过程

该过程即调用子类的构造函数来生成子类的对象。

子类的构造函数里面必须调用父类的构造函数。若没有调用父类构造函数,编译器会自动调用super()

若想调用父类中有参数的构造函数,需在super添加参数。

5.使用super调用父类构造函数方法

由于子类可以继承父类的成员变量却无法继承父类的构造函数从而解决子类成员变量赋初始值的问题。

super()必须是构造函数第一条语句,和this一样,但是是解决父类中的重复代码。

和this区别:this是调用本类,super是调用父类。具体调用根据括号。

note:super关键字是用来引用父类对象,从子类调用父类的方法。

super.RunReport();

------------------------------------------------------------------------------------------------

6.函数复写(override)

对继承的父类的函数功能不满意,复写修改代码,private不可以复写。也被成为覆盖或者重写,具有以下特征

1.在具有父子关系的两个类中;

2.父类和子类当中各有一个函数,这两个函数的定义(返回值类型、函数名、参数列表完全相同)

和重载有区别(重载在一个类里面)。复写用在继承关系中。

7.使用super调用父类的成员函数

复写父类函数里面发现重复代码,我们可以用 super.父类成员函数,再添加自己需要的代码。

来自为知笔记(Wiz)

时间: 2024-08-29 22:49:29

7.继承相关(extends、super、override)的相关文章

面向对象三大特征之继承(extends)——Java笔记(六)

继承: 从一般到特殊的关系,是一种拓展关系,子类对象是父类的一种,也可称为”is a“的关系 泛化: 把子类里的共性抽取到父类里的来的过程 特化: 子类在父类的基础上上定义了自己特有的行为特征的过程 格式: 修饰符 class SubClass extends SuperClass{ } SubClass :导出类.继承类.子类 SuperClass:父类.基类.超类.源类 子类SubClass通过extends来继承父类SuperClass 继承是通过extends来实现的 继承提高了代码的复

部分关键字--this/extends/super/static/final/abstract/访问权限总结

1.this关键字的作用 1)调用本类中的属性; 2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用 3)表示当前对象; 2.匿名对象 直接new出来的对象,不创建变量名,且只能使用一次,通常作为方法的参数及返回值使用 3.继承 关键字:extends 通过继承,子类可以直接访问父类中非私有的属性及方法 只允许单继承,但是可以多层继承 子类对象的实例化过程是先调用父类的构造器,再调用子类的构造器; 子类程序调用方法,先调用子类方法,如果子类没有再调用父类中的方法

swift 继承相关

class Vehicle { var numberOfWheels: Int var maxPassengers: Int func description() -> String { return "\(numberOfWheels) wheels; up to \(maxPassengers) passengers" } init() { numberOfWheels = 1; maxPassengers = 3; } } class Bicycle: Vehicle {

Scala笔记整理(四):Scala面向对象—类详解2(继承相关)

[TOC] 单例 希望某个类只存在一个使用的对象,而不管有多少个调用者在使用它,就是单例的概念. Java中的单例 package cn.xpleaf.single; /** * 单例模式-饿汉式(在属性中先创建好对象,不管是否调用getInstance方法) * @author yeyonghao * */ public class User { private static User user = new User(); private User(){} //外界调用不到构造函数 publi

JAVA构造方法,继承关系和SUPER关键字

SUPER可调用父类的构造方法,但要注意默认调用和参数调用. 同时,在继承类时,可以用SUPER调用其它非构造方法哟. class Test extends Object{ public Test(){ System.out.println("Test1 First thing"); } public Test(String welcome){ System.out.println("Test1 " + welcome); } protected void doSo

继承中的super解疑

package Test; public class TestExtends { public static void main(String[] args) { PersonB b = new PersonB(); System.out.println("============="+b.getName()); //PersonA a = new PersonA(); PersonA a = new PersonA("aaa"); //b.getName2(&qu

类的继承相关练习问题

问题描述: 1.描述一个Circle类,有一个成员变量radius,两个构造方法,四个成员方法,分别是获取周长,面积,体积,以及输出 2.描述一个Cylinder(圆柱)类继承了Circle,有两个成员变量radius和height,构造方法中调用了父类的构造方法,有两个成员方法,分别是获取体积以及输出 涉及变量: radius:double型变量,半径(在两个类中有不一样的含义,圆的半径和圆柱的半径) height:double型变量,圆柱的高度 大致思路: 以免浪费各位的时间先说两句,很久没

<每日一题>题目17:super()继承相关的面试题

class A(object): def go(self): print("go A go!") def stop(self): print("stop A stop!") def pause(self): raise Exception("Not Implemented") class B(A): def go(self): super().go() print( "go B go!") class C(A): def go

关于JAVA中继承相关面试extends

如题,面试题如下: 请输入下面代码的运行结果--------extends----------- class HelloA { public HelloA(){ System.out.println("HelloA"); } {System.out.println("I'm A class");} static{System.out.println("static A");} } public class HelloB extends Hello