一、前言
多态是同一个行为具有多个不同表现形式或形态的能力。Java中多态即动态绑定、后期绑定或运行时绑定,是指对象的类型在运行时确定而不是在编译时确定。
二、代码分析
2.1 仅父类
代码示意:
public class Test {
public static void main(String[] args) {
Father father=new Father();
System.out.println(father.name);
father.f1();
}
}
class Father{
protected String name="Name";
protected void f1(){
System.out.println("The f1 in Father");
}
}
输出结果:
Name
The f1 in Father
2.2 继承【Son son=new Son()】
代码示意:
public class Test {
public static void main(String[] args) {
Son son=new Son();
System.out.println(son.name); //继承未重写 仍是父类属性
son.f1();//继承未重写 仍是父类方法
System.out.println(son.habbit);//重写 子类属性
son.f2();//重写 子类方法
System.out.println(son.age);//新增 子类属性
son.f3();//新增 子类方法
}
}
class Father{
protected String name="Name";
protected String habbit="basketball";
protected void f1(){
System.out.println("The f1 in Father");
}
protected void f2(){
System.out.println("The f2 in Father");
}
}
class Son extends Father{
protected String habbit="chess";
protected void f2(){
System.out.println("The f2 in Son");
}
protected int age=12;
protected void f3(){
System.out.println("The f3 in Son");
}
}
输出结果:
Name
The f1 in Father
chess
The f2 in Son
12
The f3 in Son
2.3 多态【Father son=new Son()】
代码示意:
public class Test {
public static void main(String[] args) {
Father son=new Son();
System.out.println(son.name); //继承未重写 仍是父类属性
son.f1();//继承未重写 仍是父类方法
System.out.println(son.habbit);//重写 父类属性
son.f2();//重写 子类方法
// System.out.println(son.age);//新增 编译报错
// son.f3();//新增 编译报错
}
}
class Father{
protected String name="Name";
protected String habbit="basketball";
protected void f1(){
System.out.println("The f1 in Father");
}
protected void f2(){
System.out.println("The f2 in Father");
}
}
class Son extends Father{
protected String habbit="chess";
protected void f2(){
System.out.println("The f2 in Son");
}
protected int age=12;
protected void f3(){
System.out.println("The f3 in Son");
}
}
输出结果:
Name
The f1 in Father
basketball
The f2 in Son
三、面试金手指
Father father=new Father() | 属性:父类 |
方法:父类 | |
Son son=new Son() | 继承未重写 属性:父类非私有 |
继承未重写 方法:父类非私有 | |
重写 属性:子类 | |
重写 方法:子类 | |
新增 属性:子类 | |
新增 方法:子类 | |
Father son=new Son() | 继承未重写 属性:父类非私有 |
继承未重写 方法:父类非私有 | |
重写 属性:父类 | |
重写 方法:子类 | |
新增 属性:编译报错 | |
新增 方法:编译报错 |
四、尾声
Father son=new Son(),完成了。
天天打码,天天进步!!