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关键字的更多相关文章

  1. Java super关键字活用

    在实际开发中我们要自定义组件,就需要继承自某个组件类,如果我们自定义的这个组件类也需要像被继承的这个组件类一样,拥有丰富的构造方法. 关键字super的作用就更加显得尤为重要了,你可以在堆砌自己自定义 ...

  2. [Java学习] Java super关键字

    super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...

  3. 四. Java继承和多态2. Java super关键字

    super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...

  4. java——super关键字、final关键字、throws关键字、访问控制

    super关键字: 当父类被重写之后,子类对象无法访问父类被重写的方法,super就是为了解决这个问题: 1.使用super关键字访问父类的成员变量和成员方法: super.成员变量 super.成员 ...

  5. 《Java基础知识》Java super关键字

    super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类. super也有三种用法: 1.普通的直接引用 与this类似,super相当于是指向当前对象的父类,这样 ...

  6. java super关键字

    子类用super操作被隐藏的成员变量和方法 Example5_7.java class Sum { int n; float f() { float sum=0; for(int i=1;i<= ...

  7. java super关键字和调用父类构造方法

    表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法. 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另 ...

  8. JAVA继承时this和super关键字

    JAVA继承时this和super关键字 本文主要讨论在方法前使用this或super关键字时,编译器在什么地方查找对应的函数. 在子类中指定this关键字.首先在本类中查找,如果本类中找不到,再在父 ...

  9. Java中关键字super与this的区别

    一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引 ...

随机推荐

  1. POJ-1639 Picnic Planning 度数限制最小生成树

    解法参考的论文:https://wenku.baidu.com/view/8abefb175f0e7cd1842536aa.html 觉得网上的代码好像都是用邻接矩阵来实现的,觉得可能数据量大了会比较 ...

  2. concurrent=false/true的定时任务job策略介绍

    前言: 四种测试情况,cronExpression = 0/30 * * * * ? : 1,一个trigger,job设置的是每30s执行一次,实际需要75s:concurrent=false: 2 ...

  3. Restrictions----用法

    ----------------------------------------方法说明 --------------------------QBC常用限定方法-------------------- ...

  4. C中的lvalue和rvalue

    该贴子第一条回答虽然浅尝辄止,但还是很有参考价值. https://www.quora.com/What-is-lvalue-and-rvalue-in-C IBM一个简单的说法是: "-通 ...

  5. Python 项目隔离环境virtualenv--venv

    virtualenv 用来为一个应用创建一套“隔离”的python运行环境. 先安装virtualenv: pip3 install virtualenv 再进入项目目录,或者创建一个项目目录并进入, ...

  6. 帝国cms返回首页

    <a href="[!--news.url--]">返回首页</a>

  7. NX二次开发-NXOpenC++ Example

    NxOpenC++ Example NXOpen::WCS wcs坐标系 https://www.cnblogs.com/nxopen2018/p/11368763.html NXOpen::Draw ...

  8. docker哪些平台技术(3)

    容器平台技术 容器核心技术使得容器能够在单个 host 上运行.而容器平台技术能够让容器作为集群在分布式环境中运行. 容器平台技术包括容器编排引擎.容器管理平台和基于容器的 PaaS. 容器编排引擎 ...

  9. eclipse中server name选项变灰

    删除workspace中.metadata\.plugins\org.eclipse.core.runtime\.settings目录下 org.eclipse.wst.server.core.pre ...

  10. 20140513 matlab画图

    1.matlab画图 x1=[1.00E-06,2.00E-06,4.00E-06,9.00E-06,2.00E-05,4.00E-05,8.00E-05,2.00E-04,4.00E-04,7.00 ...