16. 多态与instanceof

多态

当你的子类将父类的方法重写后,当你还想调用到父类的方法时就需要用到多态。

格式:

Father f1=new Son();

 

注:

  1. 多态是方法的多态,属性没有

  2. 多态是两个类之间必须有关系

  3. 方法必须是重写了的,不然没有多态的必要

public class a{
   public void f1(){
       System.out.print("父类的方法");
  }
}
public class b extends a{//继承父类的方法
    public void f1(){//重写父类的f1方法
       System.out.print("子类的方法");
  }
     public void f2(){//独属于子类的方法2(f2)
       System.out.print("小白鼠");
  }
}
public class cs{//测试类
   b s1=new b;//new一个s1对象
   a s2=new b;//使用多态,调用让s2可以调用父类的方法,但是因此也会调用不了f2方法
   s2.f1();//此时输出的就会是“父类的方法”
  ((b)s2).f2();//当身处a类里的s2想调用子类里的方法时,就要用到类型的转换了
}

类型的转换

类型的转换和当初的属性一样,都是为了方便与节省空间。

格式:以上题为例

  1. 高转低:父 转 子(强制转换)

public class cs{
   b s1=new b;
   a s2=new b;
   s2.f1();
  ((b)s2).f2();//强制转换
}
  1. 低转高:子 转 父

 a s2=new b;

instanceof

他的作用是判断两个类有没有关系(如父子关系)

格式:

System.out.print(X instanceof Y);//如果有关系就会输出true反之false

 

上一篇:Leetcode 14.最长公共前缀 Python


下一篇:CDQ分治初步