向上转型
父类 父类对象 = 子类实例
example
class Person {
public void fun1(){
System.out.println("我是个父类的函数一号");
}
public void fun2(){
System.out.println("我是个父类的函数二号");
}
}
class Student{
public void fun1(){
System.out.println("子类覆写了父类的函数一号");
}
public void fun3(){
System.out.println("子类中拥有的父类没有的方法=。=");
}
}
public class MoveDemon{
public static void main (String args[]){
Student st = new Student(); // 实例化子类对象
Person per = st ; //向上转型
per.fun1(); //运行子类中覆写的函数一号
per.fun2();
per.fun3(); //该操作不合理 因为向上转型后操作的是父类对象,所以不能调用子类中的新方法
}
}
向下转型
子类 子类对象 = (子类)父类实例 ------------------------------ 父类向下转型要用强制
example
class Person {
public void fun1(){
System.out.println("我是个父类的函数一号");
}
public void fun2(){
System.out.println("我是个父类的函数二号");
}
}
class Student{
public void fun1(){
System.out.println("子类覆写了父类的函数一号");
}
public void fun3(){
System.out.println("子类中拥有的父类没有的方法=。=");
}
}
public class MoveDemon{
public static void main (String args[]){
Person per = new Student(); //向上转型
Student st = per ; //向下转型 注意!在使用类的向下转型时 必须先使用类的向上转型之后才能进行
st.fun1();
st.fun2();
st.fun3();
}
}
对象多态性的用法功能:
example
class Person {
public void fun1(){
System.out.println("我是个父类的函数一号");
}
public void fun2(){
System.out.println("我是个父类的函数二号");
}
}
class Student{
public void fun1(){
System.out.println("学生子类覆写了父类的函数一号");
}
public void fun3(){
System.out.println("学生子类中拥有的父类没有的方法=。=");
}
}
class Worker{
public void fun1(){
System.out.println("工人子类覆写了父类的函数一号")
}
public void fun4(){
System.out.println("工人子类中拥有的父类没有的方法=。=");
}
public class MoveDemon{
public static void main (String args[]){
fun8(new Student()); // 传实例到fun8()方法中 实现向上转型
fun8(new Worker());
// 该方法用来统一方法 供很多子类调用方法----------------子类覆写过就调子类的方法
public static void fun8(Person per){
per.fun1(); //调用父类中的方法
}
}
}