Java蜘蛛人 歡迎大家

          歡迎大家 來到我的blog , 如果我身邊的朋友 有什么不懂可以直接來問我 我會細心的幫助你的. 如果網絡上的朋友有什么不懂的 可以加我Java蜘蛛人 QQ48187537
          posts - 54, comments - 192, trackbacks - 0, articles - 1
           1
           2import java.util.*;
           3public class ManagerTest
           4{
           5    public static void main (String[] args) 
           6    {
           7        Manager boss=new Manager("xiaoqiao",8000,1989,04,11);
           8        boss.SetBonus(5000);
           9        Employee [] staff=new Employee[3];
          10        staff[0]=boss;   //父類 可以被子類轉換 .... 但是子類 不能被父類轉換.
          11        staff[1]=new Employee("dddd",5000,1989,10,12);
          12        staff[2]=new Employee("aaaaa",4000,1988,11,12);

                       if(staff[1] instanceof Manager)  //staff[1] 能不能 (instanceof)轉換為: Manager
                           /* 我試圖把staff[1]轉換為Manager 但是失敗了 */
                         {
                             Manager aa=(Manager)staff[1];
                         }
                   else
                     {
                       System.out.println("不能裝換");
                      }


          13        
          14        for(Employee e:staff)
          15        System.out.println("mingzi \t"+e.getName()+"\t gongzi \t"+e.getSalary()+"\t shengri \t"+e.getHrireDay());
          16    }
          17    
          18}
          19class Employee
          20{
          21    public Employee(String n,double s,int year,int month,int day)   //首先我們傳5個參數
          22    {
          23        name=n;
          24        salary=s;
          25        GregorianCalendar calendar =new GregorianCalendar(year,month -1,day);
          26        hireDay=calendar.getTime();
          27    }
          28    public String getName()  //得到名字
          29    {
          30        return name;
          31    }
          32    public double getSalary()  //得到工資
          33    {
          34        return salary;
          35    }
          36    public Date getHrireDay()  //得到年齡
          37    {
          38        return hireDay;
          39    }
          40    public void raiseSalary(double byPercent)
          41    {
          42        double raise=salary*byPercent/100;
          43         salary+=raise;
          44    }
          45    private String name;  
          46    private double salary;
          47    private Date hireDay;
          48}
          49class Manager extends Employee  //定義一個 Manager 類繼承 Employee
          50{
          51    /**
          52     @parm n the employee's name 
          53     @parm s the salary
          54     @parm year the  hire year
          55     @parm month the hire month 
          56     @parm day the hire day
          57     */

          58     public Manager(String n,double s,int year,int month,int day)
          59     {
          60         super(n,s,year,month,day);  //關鍵字 繼承Employee  里的方法
          61         bonus=0;
          62     }
          63     public double getSalary()  //定義一個方法重載..
          64     {
          65         double baseSalary=super.getSalary();
          66         return baseSalary+bonus;        //就是在工資的基本上加上獎金
          67     }
          68     public void SetBonus(double b)  //定義一個方法 存儲獎金
          69     {
          70         bonus=b;
          71     }
          72     private double bonus;
          73}

          動態(tài)的綁定的意思 . 假如 調用 x.f("Hello")  編譯器會挑 x.f(String) 不會挑x.f(int)
           假如你子類想覆蓋 父類的方法 . 那么方法返回的類型必須是一樣的
          比如:
          Employee 類中有
          public Employee  gethaha()
          {
          ...........
          }
          那么在后面的 Manager中可以 按照一樣的方法

          public Manager gethaha()
          {
          ...........
          }

          如果你想要覆蓋一個父類的方法的時候. 你的子類的方法不能低于父類的可見性
          比如.父類是 public .  那么你子類覆蓋他  也必須是 public  否則會出現錯誤的...
          今天繼承就寫這么多.

          如果你想阻止繼承的話.  就用 final 修飾符..  可以看看下面的代碼就會懂了
           public class Test    //假如在這加一個final就會報錯. 因為一個被final修飾的類 是不能繼承的.
          {
              private String name;
              private 
          double salary;
              Test(String  name,
          double salary)
              {
                  this.name
          =name;
                  this.salary
          =salary;
              }
               
          public final String getName() //假如在這加一個 final 編譯不會影響什么. 因為子類沒有覆蓋這個方法
              {
                  
          return name;
              }
              
          public  double getsalary()  //然而我們在這加一個 final 編譯就會報錯了.因為子類覆蓋了這個類.
              {
                  
          return salary;
              }
              
          public static void main (String[] args)
              {
                  Test1 t1
          =new Test1("xiaoqiao",80000);
                  t1.aaa(
          600);
                  System.out.println("小橋
          ="+t1.getName()+"\t"+t1.getsalary());
                  
              }
          }
           class Test1  extends Test
          {
              private 
          double bb;
              
          public Test1(String name,double salary)
              {
                  super(name,salary);
              }
            
          public double getsalary()
              {
                  
          double aa=super.getsalary();
                  
          return aa+bb;
              }
              
          public void aaa(double bb)
              {
                  this.bb
          =bb;
              }
          }


                                                                                                                   
                                                                                                                              ___作者: 鄭成橋

          只有注冊用戶登錄后才能發(fā)表評論。


          網站導航:
           
          主站蜘蛛池模板: 青州市| 靖安县| 江城| 安徽省| 通许县| 思茅市| 稻城县| 广南县| 神农架林区| 徐州市| 大连市| 唐山市| 中山市| 勃利县| 亚东县| 乳山市| 易门县| 新安县| 富宁县| 勃利县| 孟津县| 普洱| 丹阳市| 宁南县| 工布江达县| 安阳县| 富源县| 康马县| 辽阳县| 辉南县| 枣庄市| 高青县| 敦化市| 保德县| 沙河市| 岳池县| 舟山市| 宜君县| 池州市| 玉田县| 镇康县|