使用继承学生老师案例前后对比

使用继承学生老师案例前后对比

/*
使用继承前的学生和老师案例
属性:姓名,年龄
行为:吃饭
老师有特有的方法:讲课
学生有特有的方法:学习
*/

  • 没用用继承的代码
public class Text_qian {
    public static void main(String[] args) {
        Student s1 = new Student ( );
        s1.setName ("张三");
        s1.setAge (21);
        System.out.println (s1.getName ( ) + "..." + s1.getAge ( ));
        s1.eat ( );
        s1.study ( );
        System.out.println ("------------------------");
        Student s2 = new Student ("李四" , 24);
        System.out.println (s2.getName ( ) + "..." + s2.getAge ( ));
        s2.eat ( );
        s2.study ( );
        System.out.println ("------------------------");
        Teacher t = new Teacher ("李老师" , 35);
        System.out.println (t.getName ( ) + "..." + t.getAge ( ));
        t.eat ( );
        t.teach ( );
    }
}

/*
 * 使用继承前的学生和老师案例
 * 属性:姓名,年龄
 * 行为:吃饭
 * 老师有特有的方法:讲课
 * 学生有特有的方法:学习
 */

class Student {
    private String name;    //年龄
    private int age;        //姓名

    public Student() {       //空参构造
    }

    public Student(String name , int age) {    //有参构造
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {      //设置姓名
        this.name = name;
    }

    public String getName() {               //获取姓名
        return name;
    }

    public void setAge(int age) {           //设置姓名
        this.age = age;
    }

    public int getAge() {                    //获取姓名
        return age;
    }

    public void eat() {
        System.out.println (getName ( ) + "吃饭");    //吃饭   //name私有的,不可以直接调用,用getName()
    }

    public void study() {
        System.out.println (getName ( ) + "学习");    //学习
    }
}

class Teacher {
    private String name;    //年龄
    private int age;        //姓名

    public void Teacher() {                  //空参构造
    }

    public Teacher(String name , int age) {    //有参构造
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {      //设置姓名
        this.name = name;
    }

    public String getName() {               //获取姓名
        return name;
    }

    public void setAge(int age) {           //设置姓名
        this.age = age;
    }

    public int getAge() {                    //获取姓名
        return age;
    }

    public void eat() {
        System.out.println (getName ( ) + "吃饭");
    }

    public void teach() {
        System.out.println (getName ( ) + "讲课");
    }
}

结果

张三...21
张三吃饭
张三学习
------------------------
李四...24
李四吃饭
李四学习
------------------------
李老师...35
李老师吃饭
李老师讲课

缺点:这样写代码复用性太差了。

  • 使用继承后的学生和老师案例代码
public class Text_hou {
   public static void main(String[] args) {
       Student2 s1 = new Student2 ( );
       s1.setName ("张三");
       s1.setAge (21);
       System.out.println (s1.getName ( ) + "..." + s1.getAge ( ));
       s1.eat ( );
       s1.study ( );

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

       Student2 s3 = new Student2 ("李四" , 24);
       System.out.println (s3.getName ( ) + "..." + s3.getAge ( ));
       s3.eat ( );
       s3.study ( );

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

       Teacher2 t = new Teacher2 ("李老师" , 35);
       System.out.println (t.getName ( ) + "..." + t.getAge ( ));
       t.eat ( );
       t.teach ( );
   }
}

class Person {              //父类
   private String name;    //姓名
   private int age;        //年龄

   public Person() {
   }

   public Person(String name , int age) {    //有参构造
       this.name = name;
       this.age = age;
   }

   public void setName(String name) {      //设置姓名
       this.name = name;
   }

   public String getName() {               //获取姓名
       return name;
   }

   public void setAge(int age) {           //设置姓名
       this.age = age;
   }

   public int getAge() {                    //获取姓名
       return age;
   }

   public void eat() {                      //吃饭
       System.out.println (name + "吃饭");
   }
}

class Student2 extends Person {                  //学生子类
   public Student2() {                        //空参构造
   }

   public Student2(String name , int age) {
       super (name , age);							//super继承父类的方法
   }

   public void study() {
       System.out.println (this.getName ( ) + "学习");			// //name私有的,不可以直接调用,用this.getName()或者getName()一样结果
   }
}

class Teacher2 extends Person {                  //学生子类
   public Teacher2() {                        //空参构造
   }

   public Teacher2(String name , int age) {    //有参构造
       super (name , age);
   }

   public void teach() {
       System.out.println (this.getName ( ) + "讲课");
   }
}

结果同上

优点:增强了代码的复用性,即使再写一个工人类直接用super()调用父类姓名年龄即可,不需要重复写setXxx(),getXxx()方法

Java中继承使用案例有很多,以下是其中的几个: 1. 汽车类的继承:在汽车类中定义了一些共性的属性方法,比如车轮数、品牌、加速、刹车等,然后派生出轿车类、卡车类、客车类等子类,子类可以继承父类的属性方法,并且还可以添加自己的属性方法,比如轿车类可以添加行李箱容积属性、车身颜色属性等。 2. 动物类的继承:在动物类中定义了一些共性的属性方法,比如生命力、呼吸、移动等,然后派生出猫类、狗类、鸟类等子类,子类可以继承父类的属性方法,并且还可以添加自己的属性方法,比如猫类可以添加咪咪叫声方法、抓老鼠方法等。 3. 人类的继承:在人类中定义了一些共性的属性方法,比如姓名、性别、年龄、工作等,然后派生出学生类、教师类、工人类等子类,子类可以继承父类的属性方法,并且还可以添加自己的属性方法,比如学生类可以添加属性、选课方法等。 4. 图形类的继承:在图形类中定义了一些共性的属性方法,比如面积、周长、颜色等,然后派生出圆形类、正方形类、长方形类等子类,子类可以继承父类的属性方法,并且还可以添加自己的属性方法,比如圆形类可以添加半径属性、计算周长方法等。 5. 父子类之间的转换:父类对象可以引用子类对象,反之子类对象也可以引用父类对象,这种转换在实际开发中非常常见。比如一个方法的参数为父类对象,但是我们可以传递子类对象进去,因为子类对象是父类对象的一种特殊情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微莱羽墨

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值