多态可以分离出 “做什么” “要怎么做”
做什么:接口 抽象类
要怎么做:实现类实现
面试题:张三开车去拉萨 这个是面对对象还是面对过程
张三 Person
driver 开车 驾驶
destination 目的地
我个人理解 面向对象 张三是一个对象 他有旅游的行为。交通工具是抽象的
class Person {
String name;
String destination;
Person(String name, String destination) {
this.name = name;
this.destination = destination;
}
public void travel(TransportType transportType) {
System.out.println(name + "用交通工具" + transportType + "去" + destination);
}
}
继承注意:
父类调用方法时 调用B的方法 此时B还没有初始化,i等于0 不是等于1
创建构造器有效准则:
用尽可能简单的方法进入正常状态,如果可以的话,避免调用其他方法。
class B extends A {
private int i = 1;
@Override
void draw() {
System.out.println(i);
}
}
public abstract class A {
A() {
System.out.println("初始化A");
draw();
System.out.println("初始化B");
}
abstract void draw();
}
public class Man {
public static void main(String[] args) {
A a = new B();
a.draw();
}
// 初始化A
// 0
// 初始化B
// 1
}