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}

动态的绑定的意思 . 假如 调用 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;
    }
}


                                                                                                         
                                                                                                                    ___作者: 郑成桥

只有注册用户登录后才能发表评论。


网站导航: