自学内容网 自学内容网

Java进阶---抽象方法abstract

抽象方法

案例引入:
在某个宠物店的宠物资源管理系统中有:

狗类:属性(姓名),行为(吃饭)
猫类:属性(姓名),行为(吃饭)

利用继承技术,定义动物类Animal、猫类Cat和狗类Dog,并实现效果:
小狗大黄每天都抱着骨头一顿啃
小猫小花每天都抓一只老鼠当晚餐

//1.定义Animal动物类,作为父类,放入猫和狗的共有内容(属性、行为)
//public class Animal {
    //1.根据需求可知,要将共有的属性和行为放入
    //属性:姓名
    String name;

    //行为:吃饭
    public void eat() {
 //我们只知道每一种动物都能吃,但是不同动物吃什么、怎么吃不能具体描述。就定义成抽象方法
    }
   
public class Cat extends Animal{
    public void eat() {
        System.out.println("小猫" + name + "每天都抓一只老鼠当晚餐");
    }
}
public class Dog extends Animal {
    //父类Animal的eat方法不能满足狗类的需求,子类重写方法
    public void eat() {
        System.out.println("小狗" + name + "每天都抱着骨头一顿啃");
    }
}

本案例中,父类Animal有什么问题?
eat方法没有实际代码内容
改进:
注意:抽象方法必须在抽象类中

public abstract class Animal {
    //1.根据需求可知,要将共有的属性和行为放入
    //属性:姓名
    String name;
    //行为:吃饭
    //抽象方法用abstract修饰,注意:抽象方法必须在抽象类中
    public abstract void eat();
}
/**
 * 猫类,继承Animal动物类
 */
public class Cat extends Animal{

    //重写父类的eat方法
    @Override
    public void eat() {
        System.out.println("小猫" + name + "每天都抓一只老鼠当晚餐");
    }
}

public class Dog extends Animal {
    //父类Animal的eat方法不能满足狗类的需求,子类重写方法
    @Override
    public void eat() {
        System.out.println("小狗" + name + "每天都抱着骨头一顿啃");
    }
}

抽象方法和抽象类

  • 当定义方法时,不确定方法的具体内容,就可以定义成抽象方法,抽象方法使用关键字 abstract 修饰
  • 抽象方法只能放在抽象类中,抽象类用关键字 abstract 修饰

注意:

  • 抽象类不能创建对象,需要作为父类让子类继承
  • 子类继承抽象类,这个类必须重写所有的抽象方法
  • 抽象类的作用是作为父类让子类去继承的
//将Animal动物改造成了抽象类,它的eat方法变成了抽象方法
public abstract class Animal {
    String name;
    //抽象方法用abstract修饰,注意:抽象方法必须在抽象类中
    public abstract void eat();
    //尝试创建Animal对象,报错!(注意:抽象类不能创建对象)
        //new Animal();


}
//定义老鼠类,继承Animal类
public class Mouse extends Animal {
    //子类继承抽象父类时,必须重写父类的所有抽象方法
    @Override
    public void eat() {
        System.out.println("老鼠吃大米!");
    }
}

原文地址:https://blog.csdn.net/weixin_53263488/article/details/140279207

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!