Java基础学习笔记(1)多态总结
这个地方如果看不特别懂的话可以听一下bilibili
狂神java P71的课程,菜鸟教程讲的不是非常清楚。
首先先展示一下所用到的两个类
下面给出主调用函数
public static void main(String[] args){
son son = new son();
father father = new son();// 向上转型
son.run();
father.run();
}
}
什么是多态?就是在不同的条件下同样的方法有不同的实现。
例如像上述代码中,用
father father = new father();自然可以创建一个father类的对象,但是在java中可以这样通过子类创建。
多态必然包含:
- 重写
- 继承
- 父类引用指向子类对象:father p = new son();
首先说一下重写
那么上述代码运行结果是什么呢?
看到是两个son,这是java的特性,会执行子类的方法。如果在子类中加上 @Override,也会有相同的结果。原因在于,子类重写了父类的方法.也就是在运行的时候,执行的是son的方法。这里可以加一个 @Override。
然后说一下继承
如果son里面没有run这个方法,son将会从父类中继承其run的方法
也就是:
package com.company;
public class son extends father{
public void eat()
{
System.out.println("son eat");
}
}
main
public class Main {
public static void main(String[] args){
son son = new son();
father father = new son();
son.run();
father.run();
}
}
输出的两个都是father
但是如果反过来,father是不能够直接使用son里面的函数的,除非进行向下转化
public class Main {
public static void main(String[] args){
son son = new son();
father father = new son();
son.run();
father.run();
((com.company.son) father).eat();//向下转化
}
}