/* 断点调试 1.断点调试是指在程序的某一行设置一个断点,调式时,程序运行到这一行就会停止,然后可以一步一步往下调试 调试过程中可以看到各个变量的值,如果出错,调式代码行显示错误,停下 2.在断点调试中时运行状态,是以对象的运行类型来执行的 快捷键 F7(跳入) F8(跳过) shift+F8(跳出方法) F9(resume,执行下一断点) */ // 使用断点调试,追踪对象创建过程 public class Debug { public static void main(String[] args) { Person p = new Person("huang",20); System.out.println(p); } } class Person{ private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
// 使用断点调试,查看动态绑定机制如何工作
public class DynamicBinding { public static void main(String[] args) { A a = new B(); //编译类型A,运行类型B System.out.println(a.sum()); //30 System.out.println(a.sum1()); //20 } } class A{ //父类 public int i = 10; public int sum(){ return getI() + 10; //运行类型为B,调用子类getI(),20+10=30 } public int sum1(){ return i + 10; //属性没有动态绑定,10+10=20 } public int getI(){ return i; } } class B extends A{ //子类 public int i = 20; public int getI(){ return i; } }