知识点;
1、生成子类的过程
2、使用super调用父类构造函数的方法

首先编写3个文件。

Person.java

class Person{
String name;
int age;
Person(){
System.out.println("None");
}
Person(String name,int age){
this.name = name;
this.age = age; System.out.println("Name: " + this.name + " Age:" +this.age);
} void eat(){
System.out.println("eating");
}
}

  

Student.java:

class Student extends Person{
Student(){
System.out.println("i am students!");
}
}

  

Test.java:

public class Test{
public static void main(String[] args){
Student li = new Student();
}
}

  

编译运行结果是:

PS C:\Users\admin\Desktop\java_code\练习六> javac .\Test.java
PS C:\Users\admin\Desktop\java_code\练习六> java Test
None
i am students!

  

为什么运行的结果是这样呢?

在子类的构造函数当中,必须调用父类的构造函数。
如果没有的话,编译器会自动加上super,super会调用父类的构造函数:

super();

那为什么要"在子类的构造函数当中,必须调用父类的构造函数"?

可以减少重复代码。

请看下面的例子:

Person.java:

class Person{
String name;
int age;
Person(){
System.out.println("None");
}
Person(String name,int age){
this.name = name;
this.age = age; } void eat(){
System.out.println("eating");
}
}

  

如果按照以前的方式写,代码会是这样的,可以发现Stduent和Person类中有重复的代码。

Student.java:

class Student extends Person{
int grade;
Student(){
System.out.println("i am students!");
}
Student(String name,int age,int grade){
this.name = name;
this.age = age;
this.grade = grade; }
}

  

修改后Student.java:

class Student extends Person{
int grade;
Student(){
System.out.println("i am students!");
}
Student(String name,int age,int grade){
super(name,age);
this.grade = grade; }
}

  

Test.java:

public class Test{
public static void main(String[] args){
Student li = new Student("liming",18,90);
System.out.println(li.name);
System.out.println(li.age);
System.out.println(li.grade);
}
}

  

编译后输出:

PS C:\Users\admin\Desktop\java_code\练习六> java Test
liming
18
90

  

因此super与this调用构造函数类似,this()为空的时候调用同类无参数的构造函数,因此super会调用父类无参数的构造函数。

  • this()调用本类当中的构造函数
  • this. 调用本类中的成员变量
  • super() 调用父类当中的构造函数
  • super. 调用父类中的成员变量

java基础(七)之子类实例化的更多相关文章

  1. Java基础七-正则表达式

    Java基础七-正则表达式 一.定义: 特定的符号的组合 二.作用: 用于操作字符串数据 三.优缺点 简化代码,但是阅读性差 四.引入 4.1 问题 判断一个号码是否是QQ号? 不是零开头 6-15位 ...

  2. java基础七 [图形用户接口](阅读Head First Java记录)

    到目前为止我们接触的都是Java的命令行,但是为了让用户使用,必须有图形化界面,所以这章主要讲的是怎么使用GUI(图形用户接口)   创建一个GUI:javax.swing.* 本章讲的布局相关内容都 ...

  3. java基础(七) java四种访问权限

    引言   Java中的访问权限理解起来不难,但完全掌握却不容易,特别是4种访问权限并不是任何时候都可以使用.下面整理一下,在什么情况下,有哪些访问权限可以允许选择. 一.访问权限简介 访问权限控制: ...

  4. Java基础(七)--Exception异常处理

    发现错误的理想时机是程序运行之前(编译期),然后不太现实,很多异常无法被发现(特别是业务上的数据),需要在运行时解决. 错误恢复机制保证代码健壮性的方式,异常处理在程序中很常见,也是必须的,必须考虑有 ...

  5. java基础(七)-----深入剖析Java中的装箱和拆箱

    本文主要介绍Java中的自动拆箱与自动装箱的有关知识. 基本数据类型 基本类型,或者叫做内置类型,是Java中不同于类(Class)的特殊类型.它们是我们编程中使用最频繁的类型. Java是一种强类型 ...

  6. 《温故而知新》JAVA基础七

    抽象类 定义:抽象类前面使用abstract关键字修饰(只用语被继承) 应用场景: 在父类中写一些子类中即将实现的方法,具体的实现在子类中写,也可以将多种特征相同的类抽离出来 使用规则 abstrac ...

  7. Java基础七(Eclipse工具)

    今日内容介绍1.Eclipse开发工具2.超市库存管理系统 ###01Eclipse的下载安装 * A: Eclipse的下载安装  * a: 下载 * http://www.eclipse.org ...

  8. Java基础(七)

    字符串String类 字符串的两个问题 构造方法 字符串池 字符串的内容不可变 比较方法 练习:模拟登陆 练习:模拟登陆(限制重试次数) 替换方法(敏感词过滤) 如果希望将字符串当中指定的部分进行替换 ...

  9. java基础(七)--键盘输入

    一.示例 package cnblogs; import java.util.Scanner; public class TestBase07IO { public static void main( ...

随机推荐

  1. C# NanUI WinFormium监听页面加载开始\结束

    个人博客 地址:https://www.wenhaofan.com/article/20190501213608 因为NanUI文档中仅介绍了Formium窗口的监听,但是没有WinFormium相关 ...

  2. redis安装并设置开机启动

    1.下载并上传redis安装包至linux服务器目录:/usr/local/redis. 2.解压:tar -zxvf redis-5.0.7.tar.gz 3.编译安装:make && ...

  3. Nginx 配置Websocket

    Nginx反向代理配置websocket nginx.org 官网推荐如下的配置,也可以直接看官网:http://nginx.org/en/docs/http/websocket.html http ...

  4. LED Keychain-A Tool To Drive Specific Market Segments

    LED keychain are an excellent tool to drive specific market segments. They can focus on a small grou ...

  5. 机器学习笔记(十一)OCR技术的应用

    1.介绍OCR: OCR(Photo optical character recognition 照片光学字符识别) 应用于读取电子照片中的文字. 2.算法思路: ① 识别文字区域: ② 字符切分: ...

  6. [Code+#4] 最短路 - 建图优化,最短路

    最短路问题,然而对于任意\(i,j\),从\(i\)到\(j\)可以只花费\((i xor j) \cdot C\) 对每个点\(i\),只考虑到\(j\)满足\(j=i xor 2^k, j \le ...

  7. [0CTF 2016]piapiapia{PHP反序列化漏洞(PHP对象注入)}

    先上学习链接: https://www.freebuf.com/column/202607.html https://www.cnblogs.com/ichunqiu/p/10484832.html ...

  8. [MongoDB] 使用PHP在MongoDB中搜索的实现

    条件操作符用于比较两个表达式并从mongoDB集合中获取数据.MongoDB中条件操作符有:(>) 大于 - $gt(<) 小于 - $lt(>=) 大于等于 - $gte(< ...

  9. shell编程基础知识

    什么是shell shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户 shell对话方式 交互的方 ...

  10. IIS7.5 HTTP 错误 500 调用loadlibraryex失败的解决方法

    在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 C:\Windows\ ...