用super调用父类构造方法
类如果没有显式声明构造方法,则自动生成无参数的默认构造方法。
1.先用一个无参数的父类构造方法验证一下,
执行子类构造方法会自动调用父类的构造方法。测试代码:
class Human3{
public Human3(){
System.out.println("构造一个人");
}
}
class Pupil3 extends Human3{
public Pupil3(){
// super(); //本句注释与不注释执行结果是一样的
System.out.println("构造了一个学生 ");
}
}
public class Example3 { public static void main(String[] args) {
// TODO Auto-generated method stub
Pupil3 pupil3=new Pupil3();
}
}

运行结果:

表明,子类构造方法会默认调用父类的构造方法,对于无参的父类构造方法,写不写super()输出结果是一样的。

2.用一个有参数的父类构造方法验证一下。
执行子类构造方法会自动调用父类的构造方法。测试代码:
 class Human3 {

     private String name;
private int age; public Human3(String name) {
super();
this.name = name;
System.out.println("构造一个人");
} } class Pupil3 extends Human3 {
private String ID;
private String name;
private int age; public Pupil3(String name, String iD, int age) {
super(name);
ID = iD;
this.age = age;
System.out.println("构造一个小学生");
} } public class Example3 { public static void main(String[] args) {
// TODO Auto-generated method stub
Pupil3 pupil3 = new Pupil3("张三", "p123", 10);
}
}

运行结果

3.此时如果注释掉super方法就会报错。

报错原因:子类必须继承父类的构造方法,如果父类构造方法中没有参数传递,那么默认是不写super()继承父类的构造方法的。

Human3类的构造方法没有无参数的构造方法,所以,必须继承父类有参数的构造方法,所以,必须写super关键字来继承父类的有参数的构造方法。

除了调用父类构造方法外,super还可在子类中指代父类对象,用于:
访问被子类隐藏的父类字段,
调用被子类覆盖的父类方法。
使用形式:

super.父类字段名

super.父类方法名(可选实参表)

 
4.实例成员(实例字段、实例方法):没有static修饰的成员。
实例成员就是非静态成员,实例成员为类对象所独占。
使用对象(实例)作前缀引用实例成员,语法形式:

对象名.方法名(实参表)

对象名.字段名

关键字this用于指代当前的对象。因此,类内部可以使用this作前缀引用实例成员。
例如,Pupil3类中可用this.age引用实例字段age。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java基础-super关键字与this关键字的更多相关文章

  1. Java基础语法(11)-面向对象之关键字

    title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...

  2. Java基础笔记(2) 程序入口 关键字 标识符 常量 变量

    提醒:关于那些和我一样新鸟来看资料的,能看懂多少看多少,看不懂的就是不重要,重要的你想我自己学习肯定要标注的,这些信息明白每个知识点实际作用就好了,其他的比如等会讲的常量内存,常量池这些都是我找的资料 ...

  3. Java基础の乱弹琴一:assert关键字

    一.概述 assert:表示断言 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默 ...

  4. Java基础之final和abstract关键字

    final final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编 ...

  5. Java基础super关键字、final关键字、static关键字、匿名对象整理

    super关键字 10.1子父类中构造方法的调用 public class Test { public static void main(String[] args) { new Zi(); } } ...

  6. java基础—super关键字

    一.super关键字

  7. JAVA基础--super关键字

    子类对象new的时候堆里的内存分配: 1. 父类成员变量 2. 子类成员变量 3. this对象指向自己 4. super对象指向父类 super调用父类的方法: class FatherClass ...

  8. 夯实Java基础(七)——Static关键字

    1.static介绍 static关键字一直是各大企业中面试常常会问到的问题,主要考察面试者的基础是否扎实,下面来介绍一下static关键字. Java中static表示“全局”或者“静态”的意思,可 ...

  9. Java 基础 面向对象之构造方法和关键字

    构造方法 构造方法简介 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息. 那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建对象的时候就要做的 ...

随机推荐

  1. 【前端福利】用grunt搭建自动化的web前端开发环境-完整教程

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...

  2. jQuery.buildFragment源码分析以及在构造jQuery对象的作用

    这个方法在jQuery源码中比较靠后的位置出现,主要用于两处.1是构造jQuery对象的时候使用 2.是为DOM操作提供底层支持,这也就是为什么先学习它的原因.之前的随笔已经分析过jQuery的构造函 ...

  3. The quieter you become,The more you are able to hear.

  4. android调试工具DDMS的使用详解

    具体可见http://developer.android.com/tools/debugging/ddms.html. DDMS为IDE和emultor.真正的android设备架起来了一座桥梁.开发 ...

  5. RxJava 和 RxAndroid 四(RxBinding的使用)

    对Rxjava不熟悉的同学可以先看我之前写的几篇文章 RxJava 和 RxAndroid 一 (基础) RxJava 和 RxAndroid 二(操作符的使用) RxJava 和 RxAndroid ...

  6. Android 判断SIM卡属于哪个移动运营商

    第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemServic ...

  7. C语言笔记

    .c是C语言源文件,在编写代码的时候创建 .o是目标文件,在编译成功的时候产生  .obj .out是可执行文件,在链接成功的时候产生 工具:clang编译器(Xcode3 gcc Xcode4 LL ...

  8. 【读书笔记】iOS网络-测试与操纵网络流量

    一,观测网络流量. 观测网络流量的行为叫做嗅探或数据包分析. 1,嗅探硬件. 从iOS模拟器捕获数据包不需要做特别的硬件或网络配置.如果需要捕获这些数据包,那么可以使用嗅探软件来监听回送设备或是用于连 ...

  9. CSS Float 以及相关布局模式

    float 取值 属性 值 描述   left 向左浮动   right 向右浮动   none 默认值   inherit 继承 看一个栗子 红色线框代表父元素 脱离文档流,其实也没有完全脱离,会被 ...

  10. java重载和重写的区别

    一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现 ...