Java在学习的时候一般很少会注意的一些点,以及面向实际操作过程中的一些Demo吧主要是。
还有this和super这两个关键字的正确用法。
this和super关键字的作用

而一般用的最多的还是

因为
两种情况一般都是比较常见的,所以着重区别一下。
子父类构造方法访问流程
抛砖引玉
- 创建子类对象的时候,一定是先找子类对应的构造方法;
- 在子类构造方法的第一行,一定会调用父类的构造方法,此时就会执行父类的构造方法,对父类进行初始化;父类初始化的内容,专供当前这个子类独享使用;
- 当父类的构造方法执行完成之后,才会执行子类构造方法中的其他代码,完成子类对象的初始化;
CodeDemo
主要分三个类:父类,子类,Test测试类
Tips:
- 输出打印对象
- 在sout打印对象的时候,如果没有重写toString方法,则默认打印
包名.类名@地址值这种格式
- 创建子类对象:首先调用子类构造器方法,然后super(有参则调用父类全参构造,无则调用空参构造)
父类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package com.xlkh.demo08_constructorSeq;
import javax.lang.model.element.NestingKind;
public class Fu { private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; System.out.println("父类构造方法执行了!"); }
public Fu(String name) { this.name = name; }
@Override public String toString() { return "Fu{" + "name='" + name + '\'' + '}'; } }
|
子类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package com.xlkh.demo08_constructorSeq;
public class Zi extends Fu{
public Zi(String name) { super(name); System.out.println("子类构造方法执行了!"); } public Zi(){ super(null);
} }
|
测试类
1 2 3 4 5 6 7 8 9 10 11 12
| package com.xlkh.demo08_constructorSeq;
public class Test { public static void main(String[] args) { Zi z = new Zi("张三"); Zi z2 = new Zi("李四"); System.out.println(z); System.out.println(z2); } }
|
子类构造器调用父类构造器的执行流程

面向对象-继承刷题本
要求


Analysis
需要创建四个类,Person类,Coder类,Manager类,Test测试类。
其中Manager有bonus奖金,而Coder没有,所以这个类的构造方法略微有些不同,但是都能通过快捷键生成。
CodeDemo
Person类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| package com.xlkh.demo01_exercise;
public class Person { private String name; private int id; private double salary;
public Person(String name, int id, double salary) { this.name = name; this.id = id; this.salary = salary; }
public Person() { } public void work(){ System.out.println("人要工作!"); }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public double getSalary() { return salary; }
public void setSalary(double salary) { this.salary = salary; } }
|
Coder类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package com.xlkh.demo01_exercise;
public class Coder extends Person {
public Coder(String name, int id, double salary) { super(name, id, salary); }
public Coder() { }
@Override public void work() { System.out.println("工号为"+ super.getId() +"基本工资为" +super.getSalary()+ "的程序员正在努力写着代码!,"); } }
|
Manager类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| package com.xlkh.demo01_exercise;
public class Manager extends Person { private double bonus;
public Manager(String name, int id, double salary, double bonus) { super(name, id, salary); this.bonus = bonus; }
public Manager() { }
public double getBonus() { return bonus; }
public void setBonus(double bonus) { this.bonus = bonus; }
@Override public void work() { System.out.println("工号为"+ super.getId() +"基本工资为" +super.getSalary()+"奖金为"+bonus+"的项目经理正在努力做着管理工作,"); } }
|
Test测试类
1 2 3 4 5 6 7 8 9 10 11 12
| package com.xlkh.demo01_exercise;
public class Test { public static void main(String[] args) { Manager m = new Manager("张三", 9527, 1500, 600); Coder c = new Coder("华安", 123, 10000);
m.work(); c.work(); } }
|
Summary总结
有始有终!
