Java连载51-super关键字
一、super关键字
我们先看一个例子
package com.bjpowernode.java_learning;
public class D51_ {
public static void main(String[] args) {
Manager51 m1 = new Manager51();
m1.m1();
}
}
class Employee51{
//成员函数
public void work() {
System.out.print("员工在工作");
}
}
class Manager51 extends Employee51{
public void work() {
System.out.print("经理在工作");
}
public void m1() {
this.work();
}
}

我们从上面的代码可以看出来,这个Manager51类继承了Employee51这个类,并且还重写了一个函数work,从显示的结果也可以看的出来,返回了被改写后的内容,现在我们有个需求就是让Manager51这个类也返回“员工在工作”
我们改写子类Manager51
class Manager51 extends Employee51{
public void work() {
System.out.print("经理在工作");
}
public void m1() {
super.work();
}
}

把this改成了super,就达到了调用父类的目的
二、注意点
1.super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象(这一点一定要和this关键做对比)
2.super代表的是当前子类对象中的父类型特征。
3.什么时候使用super这个关键字
例如:子类和父类中都有某个数据,如果要在子类中访问父类的某一个属性或者方法,那么我们就需要使用super.
4.super可以用在什么地方
(1)super可以用在成员方法中
(2)super可以用在构造方法中
(3)super是不可以用在静态方法中。(和this相同都不能用在静态上下文中)
5.super关键字用在构造方法中语法
super(实参)
(1)作用:通过子类的构造方法去掉用父类的构造方法,其真正的作用就是给当前的子类对象中的父类型特征赋值。
(2)语法规则:一个构造方法第一行如果没有this(...);也米有显式的去调用(2)super(...);系统会默认调用super();
(4)super(...);的调用只能放在构造函数的第一行
(5)super(...)和this(...)不能共存
(6)super(...);调用了父类中的构造方法,但是不会创建父类对象。
(7)在java语言中只要是创建了java对象,那么Object中的无参数构造方法一定会执行。
(8)构造方法执行不一定会创建对象。
package com.bjpowernode.java_learning;
public class D51_2_ {
public static void main(String[] args) {
DebitAccount51 d1 = new DebitAccount51();
}
}
class Account51{
//
private String actno;
private double balance;
public String getActno() {
return actno;
}
public void setActno(String actno) {
this.actno = actno;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public Account51() {
System.out.println("我是Account51的构造方法");
}
public Account51(String actno,double balance) {
this.actno = actno;
this.balance = balance;
}
}
class DebitAccount51 extends Account51{
private double debit;
public double getDebit() {
return debit;
}
public void setDebit(double debit) {
this.debit = debit;
}
public DebitAccount51() {
super();//这里写不写这个super()都行,不写默认写。会调用父类的构造函数
}
public DebitAccount51(String actno,double balance,double debit) {
super(actno,balance);//因为这两个参数在父类中是私有的成员变量,所以在子类中不能直接赋值,
//所以采用super(参数)的方式进行调用
this.debit = debit;
}
}

五、源码:
D51_SuperKeywordAnalysis.java
D51_2_SuperInConstructionMethod.java
地址:
https://github.com/ruigege66/Java/blob/master/D51_SuperKeywordAnalysis.java
https://github.com/ruigege66/Java/blob/master/D51_2_SuperInConstructionMethod.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载51-super关键字的更多相关文章
- [Java学习]面向对象-super关键字;final关键字
super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在 ...
- java基础之super关键字
一.在java里面,对于super关键字通常有两种用法: 1. 用在子类的构造方法里(初始化用),主要是调用父类的默认构造方法,如果父类有不止一个构造方法,可以通过super指定具体的构造函数,比如 ...
- Java继承:super关键字、构造器、final用法
一.继承 继承好处 1.提高代码的重用性 2.提高代码的扩展性和维护性 3.为多态打下了基础 继承类型 继承子类创建对象的过程 二.super关键字的使用 理解:super代表父类的引用,用于访问父类 ...
- Java中的super关键字和this关键字作用介绍
一.super关键字的作用 1.子类在构造方法中显示调用父类构造方法 super可以在子类的构造方法中显示调用父类的构造方法:并且这行代码必须出现在子类构造方法的第一行.原因:因为父类构造方法没有执行 ...
- Java基础(51):Super与this的区别
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base" ...
- java学习之super关键字
对于具有public或者protected属性的父类,其子类若想继承父亲的属性或者方法,那么需要用到super 实例:
- Java中的super关键字何时使用
子类的构造函数中不是必须使用super,在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入 ...
- Java中关于super关键字的作用
在子类继承父类中,一般有一行super的语句,需要记住三种使用方法: 1.super.变量/对象名: 使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作 2.super.方法名(): 直接 ...
- Java基础之this和super关键字用法
this 在java中,this是一个引用当前类对象的引用变量,主要有以下几种用法: 引用当前类的实例变量· this关键字可以用来引用当前类的实例变量.如果实例变量和某个方法的参数之间存在歧义(实例 ...
- Java中super关键字的作用与用法
Java中的super是什么?java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中.主要用于以下情况: 1.使用super与变量:当派生类和基类具有 ...
随机推荐
- TSC打印机防重码在线检测系统
条码标签作为产品的一个身份标识,被应用得越来越普及,但随着使用量的增大,在打印条码流水号的过程中,偶尔会出现打印重复号码的标签出现,这样对产品生产及管理过程中会产生极大的混乱,会收到严重的客诉及返工, ...
- leaflet 结合 Echarts4 实现统计图(附源码下载)
前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...
- Docker 常用操作命令
一. docker安装 方式1 本地安装: 1)下载docker安装文件: 2)执行安装命令 yum localinstall *: 3)安装完之后 重启 systemctl restart do ...
- springBoot-eclipse搭建第一个项目
第一步:安装springtools 第二步:新建项目 在eclipse中创建spirngboot项目可能会出现连接超时的问题,这个时候我们可以在https://start.spring.io/创建项目 ...
- Centos7 基于SVN+Apache+IF.svnadmin实现web管理
1.简单介绍: iF.SVNAdmin应用程序是您的Subversion授权文件的基于Web的GUI.它基于PHP 5.3,需要安装一个Web服务器(Apache).该应用程序不需要数据库后端或任何类 ...
- Samba共享文件
1 安装samba yum install -y samba* 2 添加用户 useradd smbuser 3 设置共享文件用户的密码 smbpasswd -a smbuser 4 创建公共共享文件 ...
- 08-Django 模板
需要教程的请关注个人微信公众号 模板:产生html,用于控制页面的展示,模板不仅仅是一个html文件,它包含两部分内容: 静态内容:css,js,image 动态内容:用模板语言语言动态的产生一些网页 ...
- select同时获取value和label的值
Element ui 框架型 <el-select v-model="sketchID" autocomplete="off" @@change=&quo ...
- Node接口实现HTTPS版的
最近由于自己要做一个微信小程序,接口地址只能是https的,这就很难受了 于是乎,我租了个服务器,搞了个免费的ssl认证 可是呢,我不会搞https接口怎样实现 今天特意花了一天时间来学,来学习 &q ...
- java之递归
什么是递归 递归:指在当前方法内调用自己的这种现象. 递归的分类: 递归分为两种,直接递归和间接递归. 直接递归称为方法自身调用自己. 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法 ...