A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*               
                需求:2: 学生案例,使用多态和抽象类实现
                                                •具体事务:基础班学员,就业班学员
                                                •共性:姓名,年龄,班级,学习,吃饭

                思路:1.父类为学生,子类有基础班学员和就业班学员
                                        2.父类:成员变量1.姓名
                                                                        2.年龄
                                                                        3.班级
                                                        成员方法:
                                                                        1.学习
                                                                        2.吃饭
                                        3.基础班学员:成员变量1.学号

                                        4.就业班学员:成员变量1.学号
*/

abstract class  Student{
                //成员变量
                private String name;
                private int age;
                private String classs;

                //成员方法
                abstract void study();
                abstract void eat();

                //构造方法
                Student(){}
                Student(String name,int age,String classs){
                                this.name=name;
                                this.age=age;
                                this.classs=classs;
                }

                //set方法
                public void setName(String name){
                                this.name=name;
                }
                public void setAge(int age){
                                this.age=age;
                }
                public void setClasss(String classs){
                                this.classs=classs;
                }

                //get方法
                public String getName(){
                                return name;
                }
                public int getAge(){
                                return age;
                }
                public String getClasss(){
                                return classs;
                }

                //show方法
                public void show(){
                        System.out.print(getName()+" "+getAge()+" "+getClasss()+" ");
                }
}

//基础班学员类
class BaseClass extends Student{
        //成员变量
        private int baseClassId;

        //构造函数
        BaseClass(){}
        BaseClass(String name,int age,String classs,int baseClassId){
                        super(name,age,classs);
                        this.baseClassId=baseClassId;
        }

        //对study重写
        public void study(){
                System.out.println("基础班学生学习基础知识");
        }

        //对eat方法重写
        public void eat(){
                System.out.println("基础班吃板面");
        }

        //set方法
        public void setBaseClassId(int baseClassId){
                this.baseClassId=baseClassId;
        }

        //get方法
        public int getBaseClassId(){
                return baseClassId;
        }

        //对show方法重写
        public void show(){
                super.show();
                System.out.println(getBaseClassId());
        }
}

//就业班学员类
class  EmploymentClass extends Student{
        //成员变量
        private int employmentClassId;

        //构造函数
        EmploymentClass(){}
        EmploymentClass(String name,int age,String classs,int employmentClassId){
                        super(name,age,classs);
                        this.employmentClassId=employmentClassId;
        }

        //对study重写
        public void study(){
                System.out.println("就业班学生学习就业知识");
        }

        //对eat方法重写
        public void eat(){
                System.out.println("就业班班吃脆皮鸡");
        }

        //set方法
        public void setEmploymentClassId(int employmentClassId){
                this.employmentClassId=employmentClassId;
        }

        //get方法
        public int getEmploymentClassId(){
                return employmentClassId;
        }

        //对show方法重写
        public void show(){
                super.show();
                System.out.println(getEmploymentClassId());
        }
}

//测试类
class TestDemo{

        public static void main(String [] args){
                //调用方法一:创建对象通过show方法显示
                BaseClass bc=new BaseClass("董威",23,"传智基础班六期",8252);//基础班
                bc.show();
                bc.study();
                bc.eat();
                System.out.println("**************");
                EmploymentClass ec=new EmploymentClass("威威是超人",23,"黑马就业班六期",6666);
                ec.show();
                ec.study();
                ec.eat();
               
                System.out.println("------------------------------------");
               
                //调用方法二:创建对象通过set、get方法使用
                BaseClass bc1=new BaseClass();
                bc1.setName("刘涛");
                bc1.setAge(25);
                bc1.setClasss("传智基础六班");
                bc1.setBaseClassId(7777);
                System.out.println(bc1.getName()+" "+bc1.getAge()+" "+bc1.getClasss()+" "+bc1.getBaseClassId());
                bc1.study();
                bc1.eat();

                System.out.println("**************");

                EmploymentClass ec1=new EmploymentClass();
                ec1.setName("小涛");
                ec1.setAge(25);
                ec1.setClasss("黑马就业六班");
                ec1.setEmploymentClassId(8888);
                System.out.println(ec1.getName()+" "+ec1.getAge()+" "+ec1.getClasss()+" "+ec1.getEmploymentClassId());
                ec1.study();
                ec1.eat();
                System.out.println("--------------------------------------");

                //多态使用
                method(new BaseClass("柳岩",30,"传智基础六班",9999));
                method(new EmploymentClass("小岩岩",30,"黑马就业六班",8888));


        }

        public static void method(Student s){
                        System.out.print(s.getName()+" "+s.getAge()+" "+s.getClasss()+" ");
                        if (s instanceof BaseClass){
                                BaseClass bc=(BaseClass)s;//基础班特有的学号
                                System.out.println(bc.getBaseClassId());
                               
                        }
                        if(s instanceof EmploymentClass){
                                EmploymentClass ec=(EmploymentClass)s;//就业班特有的学号
                                System.out.println(ec.getEmploymentClassId());
                               
                        }
                        s.study();
                        s.eat();
                       
        }
}


QQ图片20160909234900.png (12.2 KB, 下载次数: 14)

QQ图片20160909234900.png

1 个回复

倒序浏览
欢迎大家指正{:2_43:}{:2_43:}{:2_30:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马