Java——super关键字
2.3 super关键字
①super不是引用类型,super中存储的不是内存地址,super指向的不是父类对象.
②super代表的是当前子类对象中的父类型特征。
③什么时候使用super?
类和父类中都有某个数据,例如,子类和父类中都有name这个属性。如果要再子类中访问父类中的name属性,需要使用 super.
④super可以用在什么地方?
>super可以用在成员方法中,不能用在静态方法中。
> super可以用在构造方法中。
⑤super关键字用在构造方法中:
语法:
| 
 super(实参);  | 
作用:通过子类的构造方法去调用父类的构造方法.
语法规则:一个构造方法第一行如果没有this(...);也没有显示的去调用super(...);系统会默认调用super();
⑥注意:
>super(...);的调用只能放在构造方法的第一行; super(....)和this(....)不能共存。super(...);调用了父类中的构造方法,但是并不一定会创建父类对象。在java语言中只要是创建java对象,那么Object中的无参数构造方法一定会执行。
>尤其当子父类出现同名成员时,可以用super进行区分;super的追溯不仅限于直接父类; super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识。
⑦单例模式缺点:单例模式的类型无法被继承
super用在成员方法中:
| 
 //员工 public class Employee{ String name = "张三"; //成员方法 public void work(){ System.out.println("员工在工作!"); } }  | 
| 
 //经理 public class Manager extends Employee{ String name = "李四"; //子类将父类中的work方法重写了. public void work(){ System.out.println("经理在工作!"); } //成员方法 public void m1(){ //this.work(); //work(); super.work(); System.out.println(this.name); System.out.println(name); System.out.println(super.name); } /* //this和super相同,都不能用在静态上下文中。 public static void m1(){ System.out.println(super.name); } */ }  | 
super用在构造方法中:
| 
 //账户 public class Account extends Object{ //Field private String actno; private double balance; //Constructor public Account(){ //super(); System.out.println("Account的无参数构造方法执行!"); } public Account(String actno,double balance){ //super(); this.actno = actno; this.balance = balance; } //setter and getter 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; } }  | 
| 
 public class DebitAccount extends Account{ //Field //独特属性 private double debit; //Constructor public DebitAccount(){ //super(); } public DebitAccount(String actno,double balance,double debit){ //通过子类的构造方法去调用父类的构造方法,作用是:给当前子类对象中的父类型特征赋值。 super(actno,balance); this.debit = debit; } //setter and getter public void setDebit(double debit){ this.debit = debit; } public double getDebit(){ return debit; } }  | 
| 
 public class Test02{ public static void main(String[] args){ DebitAccount da = new DebitAccount(); } }  | 
单例模式的类无法被继承
| 
 //单例模式的类型没有子类。无法被继承. //父类 public class Servlet{ //构造方法私有 private Servlet(){} } //子类 class HttpServlet extends Servlet{ }  | 


Java——super关键字的更多相关文章
- Java super关键字活用
		
在实际开发中我们要自定义组件,就需要继承自某个组件类,如果我们自定义的这个组件类也需要像被继承的这个组件类一样,拥有丰富的构造方法. 关键字super的作用就更加显得尤为重要了,你可以在堆砌自己自定义 ...
 - [Java学习] Java super关键字
		
super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...
 - 四. Java继承和多态2. Java super关键字
		
super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...
 - java——super关键字、final关键字、throws关键字、访问控制
		
super关键字: 当父类被重写之后,子类对象无法访问父类被重写的方法,super就是为了解决这个问题: 1.使用super关键字访问父类的成员变量和成员方法: super.成员变量 super.成员 ...
 - 《Java基础知识》Java super关键字
		
super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类. super也有三种用法: 1.普通的直接引用 与this类似,super相当于是指向当前对象的父类,这样 ...
 - java super关键字
		
子类用super操作被隐藏的成员变量和方法 Example5_7.java class Sum { int n; float f() { float sum=0; for(int i=1;i<= ...
 - java super关键字和调用父类构造方法
		
表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法. 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另 ...
 - JAVA继承时this和super关键字
		
JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...
 - Java中关键字super与this的区别
		
一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引 ...
 
随机推荐
- NDK笔记(二)-在Android Studio中使用ndk-build(转)
			
前面一篇我们接触了CMake,这一篇写写关于ndk-build的使用过程.刚刚用到,想到哪儿写哪儿. 环境背景 Android开发IDE版本:AndroidStudio 2.2以上版本(目前已经升级到 ...
 - Java中的时间日期Date和Calendar
			
日期时间类 Date: Date类的构造方法: 可以发现Date类的toString方法被重写了. Date类的方法: SimpleDateFormat 它提供了解决Date输出问题的解决方案--格式 ...
 - leetcode-12双周赛-1243-数组变换
			
题目描述: 自己的提交: class Solution: def transformArray(self, arr: List[int]) -> List[int]: if len(arr) & ...
 - C/C++ fgets
			
{ str_normalize_init(); unsigned options = SNO_TO_LOWER | SNO_TO_HALF; if (argc > 1) ...
 - EXCEL2016 OLE/COM开发-常用功能封装代码
			
hpp #pragma once #include "stdafx.h" #include "CApplication.h" #include "CW ...
 - [NOIP模拟13]题解
			
A.矩阵游戏 其实挺水的? 考场上根本没有管出题人的疯狂暗示(诶这出题人有毛病吧这么简单的东西写一大堆柿子),而且推公式能力近乎没有,所以死掉了. 很显然乘法有交换率结合率所以操作顺序对最终结果没什么 ...
 - [SCOI2009]迷路(矩阵快速幂) 题解
			
Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...
 - 工具类--MD5Utils
			
public class MD5Utils { private static final String[] HEX_DIGITS = { "0", "1", & ...
 - Openstack组件实现原理 — Glance架构(V1/V2)
			
目录 目录 Glance 安装列表 Glance Image service Image service 的组件 Glance-Api Glance-Registry Glance-db Image ...
 - 1、siege安装
			
1.下载最新版本的siege wget http://download.joedog.org/siege/siege-latest.tar.gz 2.解压并进入siege路径 tar -zxvf si ...