super关键字

简介: super关键字

作用

当前对象的父类对象,在子类中的某一个方法中,去调用父类被覆盖的方法,此时的解决方案: 使用super关键字

Super关键字使用场景

  1. 可以使用 super解决子类隐藏了父类的字段情况., 该情况,我们一般不讨论,因为破坏封装
  2. 在子类方法中,调用父类被覆盖的方法
  3. 在子类构造器中,调用父类构造器,此时必须使用 super语句: super([实参])

static 不能和 super 以及 this 共存

子类初始化过程

在创建子类对象之前,会先创建父类对象,调用子类构造器之前,在子类构造器中会先调用父类的构造器,默认调用的是父类无参数构造器

隐藏

  1. 满足继承的访问权限下,隐藏父类静态方法:若子类定义的静态方法的签名和超类中的静态方法签名相同,
    那么此时就是隐藏父类方法。注意:仅仅是静态方法,子类存在和父类一模一样的静态方法
  2. 满足继承的访问权限下,隐藏父类字段:若子类中定义的字段和超类中的字段名相同(不管类型),此时就是隐藏父类字段,此时只能通过 super 访问被隐藏的字段。
  3. 隐藏本类字段:若本类中某局部变量名和字段名相同,此时就是隐藏本类字段,此时只能通过 this 访问被隐藏的字段。

方法隐藏

UML

什么是UML

又称标准建模语言,可以用来表示软件开发过程当中类与类之间的关系

主要模型

功能模型

从用户的角度展示系统的功能,包括用例图

对象模型

采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图

动态模型

展现系统的内部行为。 包括序列图、活动图、状态图

类图的画法

权限表示

1、public 公用的 :用 + 前缀表示 ,该属性对所有类可见

2、protected 受保护的:用 # 前缀表示,对该类的子孙可见

3、private 私有的:用 - 前缀表示,只对该类本身可见

4、package 包的:用 ~ 前缀表示,只对同一包声明的其他类可见

5、静态成员: 用 _ 表示

相关文章
|
7月前
|
编译器 C++
【c++】内部类和匿名对象
【c++】内部类和匿名对象
|
C#
C#方法重写
C#方法重写
66 0
|
编译器 C++
C++中虚继承时的构造函数
在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。 下面我们以菱形继承为例来演示构造函数的调用: #include <iostream> using namespace std; //虚基类A class A{ public: A(int a); protected: int m_a; }; A:
112 1
|
安全 Java 编译器
C++的向上转型
在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍。例如: int a = 10.9; printf("%d\n", a); 输出结果为 10,编译器会将小数部分直接丢掉(不是四舍五入)。再如: float b = 10; printf("%f\n", b); 输出结果为 10.000000,编译器会自动添
|
编译器
Super关键字详解
Super关键字详解
90 0
super关键字
1)可以访问不限于直接父类甚至爷爷类的除了私有的其他属性,方法。 2)super调用父类构造器,有两个条件:第一个条件就是必须放在当前类的构造器中调用。第二个条件就是必须放在当前构造器的第一条
59 0
|
JavaScript
6、this关键字
6、this关键字
94 0
6、this关键字
|
自然语言处理 JavaScript 前端开发
浅谈一下this关键字
浅谈一下this关键字
92 0
浅谈一下this关键字

热门文章

最新文章