ITPub博客

首页 > IT职业 > IT职场 > 父子类之间常见的问题

父子类之间常见的问题

IT职场 作者:xduu 时间:2021-09-09 09:07:02 0 删除 编辑

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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2195/viewspace-2799666/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-16

  • 博文量
    84
  • 访问量
    1000