手记

父子类之间常见的问题

1 多态

父类类型 x = new 子类类型();
比如:
Thread x = new MyThread();

x.start();//子类属性不能访问到,父子类之间的属性 没有重写关系

方法
比如 class MyThread extends Thread{}
其中MyThread是子类 Thread是父类

a,父类特有的可以访问(Thread)
b,子类中重写的方法可以访问(MyThread)
c,子类中特有的不能访问(MyThread)

为了更好的加深理解,下面写出一段代码关于父子类代码之间的分析:

package com.free;

public class Test1 {       
    public static void main(String[] args) {  //main方法为入口       
         Animal x = new Tiger(); //创造一个Tiger类对象并赋值给 x 
         System.out.println
            ("(1)x.news is " + x.news);//调用到父类Animal中的new方法

         System.out.println
            ("(2)((Tiger)x).news is " //调用到父类Animal中的Tiger 里面的new方法
                + ((Tiger)x).news);
         System.out.println//调用到父类Animal中的smile方法
            ("(3)x.smile() is " + x.smile());     
         System.out.println//调用到父类Animal中的Tiger 里面的smile方法
            ("(4)((Tiger)x).smile() is " + 
                    ((Tiger)x).smile());//tiger 里面的smile方法
         System.out.println
            ("(5)x.getNews() is " + 
                    x.getNews());     
         System.out.println
            ("(6)x.getMessage() is " + 
                    x.getMessage());     
     }  
}    
class Animal {    
       public String news = 
               "Animal's news";      
       public String message = 
               "Animal's message";        
       public static String smile() {         
         return "smile from Animal";     
       }         
       public String getNews() {        
         return news;    
       }         
       public String getMessage(){ //这个父类的方法没有被重写
         return this.message;  //调用本父类Animal中的message方法
       }   
}    
class Tiger extends Animal {    

       public String news = //子类中特有的定义属性
               "Tiger's news";   
       public String message = 
                  "Tiger's message";   
       public static String smile() {       
         return "smile from Tiger";       
       }          
       public String getNews() { //继承父类,但是父类中的那个方法没有被重写,所以也会把父类的那个也继承下 
             return this.news;     //调用Tiger这个子类的getNews的方法   
       }  
}

以下为输出的结果:

(1)x.news is Animal's news
(2)((Tiger)x).news is Tiger's news
(3)x.smile() is smile from Animal
(4)((Tiger)x).smile() is smile from Tiger
(5)x.getNews() is Tiger's news
(6)x.getMessage() is Animal's message

0人推荐
随时随地看视频
慕课网APP