关键字super

在Java类中使用super来引用父类的成分
  super可用于访问父类中定义的属性
  super可用于调用父类中定义的成员方法
  super可用于在子类构造方法中调用父类的构造方法
  super的追溯不仅限于直接父类

关键字 super举例
public class Person {
  private String name;
  private int age;
  public String getInfo() {
    return "Name: " + name + "\nage: " + age;
  }
}

public class Student extends Person {
  private String school = "New Oriental";
  public String getSchool() { return school; }
  public String getInfo() {
    // 调用父类的方法
    return super.getInfo() +"\nschool: " +school;
  }
}

构造方法不能继承

子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法
在一个Java类中可以通过两种方式获得构造方法
  使用系统默认的无参数构造方法
  显式定义一个或多个构造方法
一旦显式定义了构造方法,则系统不再提供默认构造方法

调用父类构造方法

在子类的构造方法中可使用super(参数列表)语句调用父类的构造方法
如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法
如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错

调用父类构造方法举例 (1)

public class Person {
  private String name;
  private int age;
  private Date birthDate;

  public Person(String name, int age, Date d) {
    this.name = name;
    this.age = age;
    this.birthDate = d;
  }
  public Person(String name, int age) {
    this(name, age, null);
  }
  public Person(String name, Date d) {
    this(name, 30, d);
  }
  public Person(String name) {
    this(name, 30);
  }
  // ……
}

调用父类构造方法举例 (2)

public class Student extends Person {
  private String school;

  public Student(String name, int age, String s) {
    super(name, age);
    school = s;
  }
  public Student(String name, String s) {
    super(name);
    school = s;
  }
  public Student(String s) {
    // 编译出错: no super(),系统将调用父类无参数的构造方法。
    school = s;
  }
}

子类对象的实例化过程

super(…)和this(…)调用语句不能同时在一个构造函数中出现

super(…)或this(…)调用语句只能作为构造函数中的第一句出现

Java类的设计----关键字super的更多相关文章

  1. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  2. Java类的设计----Object 类

    Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: ...

  3. Java 继承extends、关键字super和this、多态、动态绑定

    Manager 经理  extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...

  4. Java类的设计----访问控制

    访问控制 可以对Java类中定义的属性和方法进行访问控制----规定不同的保护等级: public.protected.default.private //仅在类的内部可以访问. private St ...

  5. Java 类和Static关键字

    类的定义 类的命名.首字母大写 大括号后面没有分号 成员变量 Java会自动初始化成员变量但是不会自动初始化局部变量: 可以在定义成员变量是直接初始化,成员变量的作用范围在整个类体 对象的创建和引用的 ...

  6. Java类的设计----多态性及其应用

    多态性及其应用 多态性 多态—在Java中,子类的对象可以替代父类的对象使用一个变量只能有一种确定的数据类型一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Stude ...

  7. java类的设计原则

    1.内聚性 类应该描述一个单一的实体,所有的类操作应该在逻辑上相互配合,支持一个连贯性的目标.例如:学生和教职工属于不同的实体,应该定义两个类. 2.一致性 要遵循一定的设计风格和命名习惯.给类.方法 ...

  8. Java类的设计----方法的重写、覆盖

    方法的重写.覆盖 在子类中可以根据需要对从父类中继承来的方法进行改造—覆盖方法(方法的重置.重写),在程序执行时,子类的方法将覆盖父类的方法. 覆盖方法必须和被覆盖方法具有相同的方法名称.参数列表和返 ...

  9. java类和对象的基础(笔记)

    在Java类的设计中,有时希望一个类在任何时候只能有一个实例.这时可以将该类设计为单例模式(singleton).要将一个类设计为单例模式,需要把类的构造方法的访问修饰符声明为private,然后在类 ...

随机推荐

  1. Django视图层之路由配置系统(urls)

    视图层之路由配置系统(urls) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个U ...

  2. u-boot mkconfig文件分析

    #!/bin/sh -e #遇到非0返回 就退出脚本 # Script to create header files and links to configure # U-Boot for a spe ...

  3. rzsz安装【转】

    环境:CentOS 发生情况:需要安装工具:szrz 工具进行 windows 和linux传文件 安装方式:从网上其他教程找的所以就按照如下方式操作 1. 下载软件 rzsz-3.34.tar.gz ...

  4. js 时间格式与时间戳的相互转换和计算几天后的日期是哪一天

    //把日期转换成时间戳 function get_unix_time(time1){    var newstr = time1.replace(/-/g,'/');     var date =  ...

  5. openldap 备份与导入 及相关问题

    摘要: 对openldap进行备份时,直接使用slapcat命令进行备份,使用ldapadd还原出现问题及解决. 介绍: 对openldap进行备份时,直接使用slapcat命令进行备份(如代码一), ...

  6. Python内置字典;dict ,set

    dict and set dict:  键-值 /重复添加 set :  键 / key不能重复 对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容.相反,这些方法会创建新的对象并返 ...

  7. pro mvvm 读书笔记

    一.分离关注点 目的是确保每一个模块值有单一的,明确的目的,不需要去负责其他的功能.单一的目的也称为关注点. 1.1依赖 引用程序集对于依赖来说不是必须的.依赖关系可能也存在于一个代码单元要知道另一个 ...

  8. 在centos中安装mangodb

    1.下载完安装包,并解压 tgz(以下演示的是 64 位 Linux上的安装) curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_6 ...

  9. 高速掌握Lua 5.3 —— 扩展你的程序 (1)

    Q:怎样在C中将Lua作为配置文件语言使用? A: "config.lua"文件里: -- window size width = 200 height = 300 "m ...

  10. Java SerialPort SDK

    SerialPort SDK is a professional java serial port SDK,provides simple communication interface to con ...