方法重写及一些应用

  1. 方法的重写(override/overriding):重新写、覆盖

    • 发生在父子类中,方法名相同,参数列表相同

    • 重写方法被调用时,看对象的类型---------------new谁就调谁的,这是规定

      class 餐馆{
          void 做餐(){ 做中餐 }
      }
      //1)我还是想做中餐----------------------不需要重写
      class Aoo extends 餐馆{
      }
      //2)我想改做西餐------------------------需要重写
      class Boo extends 餐馆{
          void 做餐(){ 做西餐 }
      }
      //3)我想在中餐基础之上加入西餐------------需要重写(先super中餐,再加入西餐)
      class Coo extends 餐馆{
          void 做餐(){
              super.做餐();
              做西餐
          }
      }
      
      public class Person {
          String name;
          int age;
          String address;
          Person(String name,int age,String address){
              this.name = name;
              this.age = age;
              this.address = address;
          }
      
          void eat(){
              System.out.println(name+"正在吃饭...");
          }
          void sleep(){
              System.out.println(name+"正在睡觉...");
          }
          void sayHi(){
              System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
          }
      }
      
      public class Student extends Person{
          String className;
          String stuId;
          Student(String name,int age,String address,String className,String stuId){
              super(name,age,address); //传递的是name/age/address的值
              this.className = className;
              this.stuId = stuId;
          }
      
          void study(){
              System.out.println(name+"正在学习...");
          }
          
          void sayHi(){
              System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address+",所在班级为:"+className+",学号为:"+stuId);
          }
      }
      
      public class Teacher extends Person{
          double salary;
          Teacher(String name,int age,String address,double salary){
              super(name,age,address);
              this.salary = salary;
          }
      
          void teach(){
              System.out.println(name+"正在讲课...");
          }
          
          void sayHi(){
              System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address+",工资为:"+salary);
          }
      }
      
      public class Doctor extends Person {
          String title;
          Doctor(String name,int age,String address,String title){
              super(name,age,address);
              this.title = title;
          }
          void cut(){
              System.out.println(name+"正在做手术...");
          }
      }
      
      public class ExtendsTest {
          public static void main(String[] args) {
              Student zs = new Student("张三",25,"廊坊","jsd2302","001");
              zs.eat();
              zs.sleep();
              zs.sayHi();
              zs.study();
      
              Teacher ls = new Teacher("李四",35,"佳木斯",6000.0);
              ls.eat();
              ls.sleep();
              ls.sayHi();
              ls.teach();
      
              Doctor ww = new Doctor("王五",46,"山东","主任医师");
              ww.eat();
              ww.sleep();
              ww.sayHi();
              ww.cut();
          }
      }
      
  2. 综合练习:

    public class Animal {
        String name;
        int age;
        String color;
        Animal(String name,int age,String color){
            this.name = name;
            this.age = age;
            this.color = color;
        }
        void drink(){
            System.out.println(color+"色的"+age+"岁的"+name+"正在喝水...");
        }
        void eat(){ //---------------明天继续改造
            System.out.println(color+"色的"+age+"岁的"+name+"正在吃饭...");
        }
    }
    
    public class Dog extends Animal {
        Dog(String name,int age,String color){
            super(name,age,color);
        }
        void lookHome(){
            System.out.println(color+"色的"+age+"岁的狗狗"+name+"正在看家...");
        }
        void eat(){
            System.out.println(color+"色的"+age+"岁的狗狗"+name+"正在吃肯头...");
        }
    }
    
    public class Chick extends Animal {
        Chick(String name,int age,String color){
            super(name,age,color);
        }
        void layEggs(){
            System.out.println(color+"色的"+age+"岁的小鸡"+name+"正在下蛋...");
        }
        void eat(){
            System.out.println(color+"色的"+age+"岁的小鸡"+name+"正在吃小米...");
        }
    }
    
    public class Fish extends Animal {
        Fish(String name,int age,String color){
            super(name,age,color);
        }
        void eat(){
            System.out.println(color+"色的"+age+"岁的小鱼"+name+"正在吃小虾...");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            Dog dog1 = new Dog("小黑",2,"黑");
            dog1.eat();
            dog1.drink();
            dog1.lookHome();
    
            Dog dog2 = new Dog("小白",1,"白");
            dog2.eat();
            dog2.drink();
            dog2.lookHome();
    
            Dog dog3 = new Dog("小强",2,"黑白");
            dog3.eat();
            dog3.drink();
            dog3.lookHome();
    
            Chick chick = new Chick("花花",1,"棕");
            chick.eat();
            chick.drink();
            chick.layEggs();
    
            Fish fish = new Fish("金金",2,"金");
            fish.eat();
            fish.drink();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值