用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. mousewheel

    判断鼠标往上还是往下滚动 html代码: <div class="div"> </div> css代码: .div{ position:absolute; ...

  2. Snabbt.js – 极简的 JavaScript 动画库

    Snabbt.js 是一个简约的 JavaScript 动画库.它会平移,旋转,缩放,倾斜和调整你的元素.通过矩阵乘法运算,变换等可以任何你想要的方式进行组合.最终的结果通过 CSS3 变换矩阵设置. ...

  3. 编码之JSP乱码涉及问题

    各种编码一栏表 A. JSP/Servlet都有的编码设置 1. request.setCharacterEncoding("UTF-8") 2. response.setChar ...

  4. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  5. Ajax基本概念和原理

    什么是Ajax Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. Ajax的全称是Asynchronous JavaScript and XML,即异步JavaScript+X ...

  6. H5移动端页面设计心得分享

    去年JDC出了不少优秀的武媚娘…不,H5呢,大家都很拼,同时当然也积累了一些经验和教训,今天结合咱们的实战案例,从字体,排版,动效,音效,适配性,想法这几个方面好好聊一聊关于H5的设计,希望对同学们有 ...

  7. 关于condition variable的理解

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  8. iOS 内存问题

    malloc: *** error for object 0x15f8a3558: incorrect checksum for freed object - object was probably ...

  9. 【Android】OPlayer升级Vitamio到4.1

    前言 很久没有更新OPlayer,还是使用旧版Vitamio 3.0版本(新版已经到4.1),这次更新下. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.c ...

  10. iOS 简单动画 block动画

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ UIView * view = [ ...