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. 使用ReadStream方法延时读取文件

    const fs = require('fs'); let file = fs.createReadStream("filenpath.js"); file.pause(); fi ...

  2. idea 右键没有class文件的问题,,

    修改文件夹的  属性  蓝色即为java代码,,绿色为test,,等等

  3. linux,进行批量下载文件操作

     wget -i url.txt -P ./Photo 批量下载图片(一般是某个相册的图片) 首先先得到一张图片的地址如:www.example.com/pic/001.jpg 同相册的图片地址会有一 ...

  4. bootstrap 标签页的使用(tab)

    <!DOCTYPE html> <html> <head> <title></title> <link rel="style ...

  5. J2EE学习篇之--JQuery技术详解

    前面我们讲解了的J2EE的技术都是服务端的技术,下面我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术 简介: jQuery由美国人John Resig创建,至今已吸引了来自世界各地的 ...

  6. 质数密度+思维——cf1174D

    /* 构造 n个点的无向图,无重边自环 边数e也是质数 点的度数也是质数 */ #include<bits/stdc++.h> #include<vector> using n ...

  7. Delphi 虚拟桌面

    Delphi创建虚拟桌面实现后台调用外部程序 核心提示:最近在做的一个软件,其中有一部分功能需要调用其它的软件来完成,而那个软件只有可执行文件,根本没有源代码,幸好,我要做的事不难,只需要在我的程序启 ...

  8. NX二次开发-Block UI C++界面Toggle(开关)控件的获取(持续补充)

    NX9+VS2012 public: void SetBlockUIShow(); void ToggleInt::SetBlockUIShow() { //获取开关控件 //获取枚举控件 Prope ...

  9. JAVA调用R脚本 windwos路径下

    RConnection c = new RConnection();// REXP x = c.eval("source('D:\\\\jiaoben\\\\RJava_test.R',en ...

  10. mybatis 丢失字段

    实体上,如果没写get,记得加上 @Data