this在构造方法间的使用,

public class Person {
private String name;
private int age; public Person() {
//this()是调用其他的构造方法
//this()必须写在构造方法第一行
this("张三", 20);
} public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Test {
public static void main(String[] args) {
Person p1 = new Person("张三", 18);
Person p2 = new Person();
}
}

super:

  在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的super();语句父类的构造方法第一行也有隐式的super();语句,所有的类都有一个object祖宗类,父类都继承object类

  super()和this()的区别

  this()是调用自己的构造方法

  super()是调用父类的构造方法

public class Fu {
public Fu(){
System.out.println("这是父类构造方法");
  } 
}
public class Zi extends Fu {
public Zi() {
      //这里有隐式的super();
System.out.println("这是子类构造方法");
}
}
public class Test1 {
public static void main(String[] args) {
new Zi();
}
}//运行结果:这是父类构造方法 ,
 //      这是子类构造方法

子类和父类内存:

  创建子类对象对象空间中,划分两个空间,一个存放父类用super标记,一个存放自己用this标记;父类成员变量随子类进入划分给父类的区域,(super标记的区域)

父类的构造方法如果有参数,子类必须写全,

子类可以重载构造方法,不过第一行必须是super();

(上面this中写到,this()必须写在第一行,在这里写到super()必须写在第一行,这里就存在矛盾,因此这两个关键字不能共存,要保证子类的所有构造方法直接或间接调用到父类的构造方法即可,具体如下代码)

父类如果有多个构造方法,子类任意调用一个就行;

public class Fu {
public Fu() { }
}
public class Zi extends Fu {
public Zi() {
this("hhh");//调用自己的构造方法,间接调用父类构造方法
}
public Zi(String s){
super();
}
}

super用法:

public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Student extends Person {

    public Student(String name, int age) {
super(name, age);
} }
public class Teacher extends Person {

    public Teacher(String name, int age) {
super(name, age);
} }
public class Test1 {
public static void main(String[] args) {
Student s=new Student("学生", 18);
Teacher t=new Teacher("老师", 28);
System.out.println(s.getName());
System.out.println(t.getAge());
}
}

Java学习笔记11(this,super)的更多相关文章

  1. Java学习笔记---继承和super的用法

    自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...

  2. java学习笔记-继承中super关键字

    背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...

  3. Java学习笔记11

    package welcome; import java.util.Scanner; /* * 代数问题:求解2x2线性方程 */ public class ComputeLinearEquation ...

  4. Java学习笔记 11/15:一个简单的JAVA例子

    首先来看一个简单的 Java 程序. 来看下面这个程序,试试看是否看得出它是在做哪些事情! 范例:TestJava.java   // TestJava.java,java 的简单范例  public ...

  5. Java学习笔记-11.运行期间类型鉴定

    1.Class对象的getClasses()方法获取的是该类中所有的公共的内部类,以及从父类,父接口继承来的内部类.getinterfaces()方法返回类继承的所有接口. import javax. ...

  6. Java 学习笔记(11)——lambda 表达式

    在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编 ...

  7. Java 学习笔记(11)——异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用System.ou ...

  8. java学习笔记(11) —— Struts2与Spring的整合

    1.右键 项目名称 —— MyEclipse —— Add Spring Capabilities 2.选取 Copy checked Library contents to project fold ...

  9. Java学习笔记11(面向对象四:多态)

    多态: 举例:描述一个事物的多种形态,如Student类继承了Person类,一个Student对象既是Student,又是Person 多态体现为:父类引用变量可以指向子类对象 多态的前提:必须有子 ...

随机推荐

  1. 日期在Linux与Windows下的区别

    最近遇到了这个问题,就是相同的代码在Windows与Linux下的日期转换不一致. 原因:时区问题,主要是操作系统与JVM中的时区不同导致的 在网上查了很多处理的方法:最后总结出一条简单粗暴的方法:原 ...

  2. 漏洞复现——tomcat远程代码执行漏洞

    漏洞描述: 当存在该漏洞的Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT请求方法,攻击者可通过构造的攻击请求向服务器上传包含任意代码的 JSP 文件,造成任意代码执行 影响范 ...

  3. 5月21 回话控制SESSION COOKIE

    百科 HTTP普及(无状态性) 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP ...

  4. 【Oracle】【6】去掉字符串最后一个特殊字符

    --去除字符串末尾的省字,若无省字则无变化 SELECT DISTINCT TRIM('省' FROM PROVINCE) PROVINCE FROM ADDRESS 参考博客: 1,使用oracle ...

  5. 关于移动端rem适配

    var num = 1 / window.devicePixelRatio; var fontSize = document.documentElement.clientWidth / 10; doc ...

  6. functional program language(what,include,why popular)

    函数式语言(functional language)一类程序设计语言.是一种非冯·诺伊曼式的程序设计语言.函数式语言主要成分是原始函数.定义函数和函数型.这种语言具有较强的组织数据结构的能力,可以把某 ...

  7. Beta阶段——第5篇 Scrum 冲刺博客

    Beta阶段--第5篇 Scrum 冲刺博客 标签:软件工程 一.站立式会议照片 二.每个人的工作 (有work item 的ID) 昨日已完成的工作 人员 工作 林羽晴 完成了邮箱发送功能的测试,测 ...

  8. ActiveMQ producer 提交事务时突然宕机,会发生什么

    producer 在提交事务时,发生宕机,commit 的命令没有发送到 broker,这时会发生什么? ActiveMQ 开启事务发送消息的步骤: session.getTransactionCon ...

  9. Qt中漂亮的几款QSS

    /* === Shared === */QStackedWidget, QLabel, QPushButton, QRadioButton, QCheckBox, QGroupBox, QStatus ...

  10. Windows开启远程桌面服务(Win10)

    进入控制面版,找到远程设置 应用确定后Windows服务即会被启动.