Super关键字理解
Super关键字
- super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象,super代表的是当前子类对象中的父类型特征。
this是引用型变量,保存对象的内存地址(和super区别),super和this都需要依托对象的存在,才可以使用(所以static修饰的成员变量和成员方法都无法使用this和super) - 什么时候使用super?
子类和父类中都有某个数据, 例如,子类和父类都有name这个属性。如果要在子类中访问父类中的name属性,需要使用super。
- super可以用在什么地方?
a) super可以用在成员方法中
b) super可以用在构造方法中 - super的作用?
a) 通过子类的构造方法调用父类的构造方法
语法规则:一个构造方法第一行如果没有this(…),也没有显示的调用super(…);
系统会默认调用super();
注意:super(…);的调用只能放在构造方法的第一行
b) 单例模式的缺陷:单例模式的类型没有子类,无法被继承,因为构造方法私有化
例子:
//Account.java 父类
public class Account {private String actno;private double balance;public Account() {System.err.println("父类无参构造方法");}public Account(String actno, double balance) {this.actno = actno;this.balance = balance;System.out.println("父类有参构造函数并给成员变量赋值");}public void setActno(String actno) {this.actno = actno;}public String getActno() {return actno;}public void setBalance(double balance) {this.balance = balance;}public double getBalance() {return balance;}
}
-------------------------------------------------
//CreditCard.java 子类
public class CreditCard extends Account{private double credit;public CreditCard() {super(); //可以显示写出来,可以不写出来,效果一样,调用父类无参构造函数System.out.println(“子类无参构造方法”);}public CreditCard(String actno, double balance, double credit) {
//通过子类的构造方法调用父类的构造方法,作用是:给当前子类的父类型特征赋值,并没有创建父类对象super(actno, balance);this.credit = credit;System.out.println("子类有参构造方法并给成员变量赋值");}public void setCredit(double credit) {this.credit = credit;}public double getCredit() {return credit;}
}
---------------------------------------------
Test.java 主类
public class Test {public static void main(String[] args) {// TODO Auto-generated method stubCreditCard c = new CreditCard();CreditCard c2 = new CreditCard("123",1000.5,3000.8);System.out.println("Actno="+c2.getActno());System.out.println("Balance="+c2.getBalance());System.out.println("Credit="+c2.getCredit());}
}
运行结果:
父类无参构造方法
子类无参构造方法
父类有参构造函数并给成员变量赋值
子类有参构造方法并给成员变量赋值
Actno=123
Balance=1000.5
Credit=3000.8
Super关键字理解相关推荐
- Java 面向对象:super关键字的理解
Java 面向对象:super关键字的理解 一.Super关键字: 1. super调用父类的构造方法,必须在构造方法的第一个 2. super只能出现在子类的方法或构造方法中! 3. super和t ...
- This和Super关键字的对比
this和Super关键字 this和Super关键字的对比 Super关键字的用法如下: 1. super关键字代表了父类空间的引用: 2. super关键字的作用: 3. super关键字调用父类 ...
- java构造方法 this_Java之构造方法及this、super关键字
有关构造方法的理解: 需要对对象的数据进行初始化,则创建一个构造方法,此方法名字和类名一样,但是没有返回值(类型和具体的值都没,但是可以写return;).构造方法是用来创建对象的,所以是不能被对象调 ...
- 1.4 super关键字详解
由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字.super 可以用来访问父类的构造方法.普通方法和属性. super 关键字的功能: 在子类的构造方法中显 ...
- 第十三题:子类要调用继承自父类的方法,必须使用super关键字。
第十三题 子类要调用继承自父类的方法,必须使用super关键字. A正确 B错误 懵逼树上懵逼果,懵逼树下你和我,首先来一段代码 如果子类没有重写父类的方法,调用父类的方法用不用super关键字结果都 ...
- Java类的继承关键字_Java的第八天(类的继承、super关键字的使用、方法的重写)...
39.类的继承java 描述类的时候,咱们若是发现有几个类有重复的属性和方法,咱们就能够采用继承的方法来设计ide 使用extends关键字来继承this 语法:设计 class 子类 extends ...
- [转载] Java中this和super关键字分别是什么意思
参考链接: Java中的Super关键字 this和super关键字 this是自身的一个对象,代表对象本身可以理解为指代当前的对象,它可以调用当前对象的属性.方法和构造方法,一般情况下可以省略,必须 ...
- java super关键字_Java入门(二)下
点击蓝字关注我们 01 面向对象三大特性(2)---继承 一. 概念 继承是java三大特性之一(封装装,继承,多态).继承是从已有的类中派生出新的类.新的类继承原有类所有的属性和行为,并能拓展新的能 ...
- 1.4 面向对象编程中级 对象的继承与super关键字-跟着韩老师学JavaSE
大佬给推荐的韩顺平老师的课程 2021年刚刚录的船新版本! [零基础 快速学Java]韩顺平 零基础30天学会Java 硬把从另一个讲师那里看了300多集的我拽过来 几十节课一下子爱上这个节奏了!安利 ...
最新文章
- magento 获取产品的属性值
- android全系统动态二进制分析--CopperDroid
- B站发布2020年一季度财报:月活用户达1.72亿,日活用户突破5000万
- Webstorm相关设置
- stl之list双向链表容器应用基础
- ajax只能局部刷新吗,ajax有哪几种方法可以实现局部刷新
- SpringCloud微服务(01):Eureka组件,管理服务注册与发现
- 《算法设计与分析》王红梅 第二版部分习题
- Rose双机热备两款软件原理介绍以及共享存储双机热备方案和镜像双机热备方案介绍
- zend studio12配置php,Zend Studio 12.0调试php代码
- ❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备
- java 前置系统报文通讯方式_银行核心与前置系统的区别
- java练习(金额转换)
- Select 选择器
- LINUX内核编译选项-5
- 解决微信(扫码)无法直接下载apk的问题
- 正态性/方差齐性检验及stata实现
- mflac0这个格式解码不成功
- writing | 如何写好一篇学术论文(三)标点符号的使用,改写段落
- Tampermonkey插件安装出现“无法从该网站添加应用、扩展程序和用户脚本”问题解决