why subclass reference can't hold superclass object in java

后端 未结 5 482
醉梦人生
醉梦人生 2021-01-19 03:14
class One{

}
class Two extends One{

}
class Main{

      public static void main(String[]  args){
       Two t = new One(); // invalid 

}`
}

I a

5条回答
  •  清歌不尽
    2021-01-19 03:39

    Consider class Two contain a method, let say demo().

    class One{
    
    }
    
    class Two extends One {
         void demo(){
             System.out.println("in Two");
         }
    }
    
    class Main{
    
          public static void main(String[]  args){
             Two t = new One(); // Suppose this is valid at compilation time
             t.demo();
          }
    
    }
    

    Now suppose if compiler doesn't give us error when we create object of class One i.e. child reference holds object of parent. Further t is reference of class Two, hence t.demo() is valid.

    Now when program runs, reference t contains object of class One. When program reaches t.demo() then t contains object of class One and class One does not have any method named demo().

    So to prevent such type of errors compiler checks if object is type of reference i.e. object class is same as reference class or child of reference class.

提交回复
热议问题