黑马程序员技术交流社区

标题: 继承 不知理解的是否正确 请大师指点 [打印本页]

作者: gmz158    时间: 2014-8-4 21:32
标题: 继承 不知理解的是否正确 请大师指点
本帖最后由 gmz158 于 2014-8-5 00:36 编辑

/**
面向对象中的继承
        在创建一个类时,系统会自动给出无参构造函数,而如果手动给出了带有参数的构造函数,
        系统则不会再给出构造函数,需要自己手动给出。构造函数是用来进行属性初始化的。
        Staff中的属性为私有属性,只能在本类中调用,需要给出公开的get/set方法。
        Staff为抽象类,其方法可以为抽象的,也可以不为抽象的,
        Programmer/Manager继承了Staff,而类Staff中abstract work();为抽象方法,
        其子类Programmer/Manager需要重写这个方法
*/
class Demo5
{
        public static void main(String[] args)
        {
                Manager man=new Manager("张三",01,3500,2000);
                System.out.println("name:"+man.getName()+"number:"+man.getNumber()+"pay:"+man.getPay()+"money:"+man.getMoney());
                man.work();
                Programmer pro=new Programmer("李四",02,2000);
                System.out.println("name:"+pro.getName()+"number:"+pro.getNumber()+"pay:"+pro.getPay());
                pro.work();
        }
}
abstract class Staff
{
        private String name;
        private int number;
        private int pay;
        Staff(){}//手动给出无参构造函数
        Staff(String name,int number,int pay)//三个参数的构造函数
        {
                this.name=name;
                this.number=number;
                this.pay=pay;
        }
        abstract void work();//抽象方法
        //---------------------get/set方法
        void setName(String name)
        {
                this.name=name;
        }
        String getName()
        {
                return name;
        }
        void setNember(int number)
        {
                this.number=number;
        }
        int getNumber()
        {
                return number;
        }
        void setPay(int pay)
        {
                this.pay=pay;
        }
        int getPay()
        {
                return pay;
        }
}
class Programmer extends Staff
{
        Programmer(){}
        Programmer(String name,int number,int pay)
        {
                super(name,number,pay);
        }
        void work()//重写work方法
        {
                System.out.println("写程序");
        }
}
class Manager extends Staff
{
        int money;
        Manager(){}
        Manager(String name,int number,int pay,int money)
        {
                super(name,number,pay);
                this.money=money;
        }
        void work()//重写work方法
        {
                System.out.println("处理事务");
        }
        //--------------------------------
        void setMoney(int money)
        {
                this.money=money;
        }
        int getMoney()
        {
                return money;
        }
}

作者: 李利威    时间: 2014-8-4 21:53
代码没仔细看!!但你的理解没错
作者: /aiq玩完?/aiq    时间: 2014-8-4 21:57
路过,顶一下
作者: 七弟    时间: 2014-8-4 22:10
路过看看
作者: iefegend    时间: 2014-8-16 10:09
貌似抽象方法叫实现而不是叫重写的好点哦,,,路过,,:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2