抽象类和抽象方法(Java)

抽象类和抽象方法(Java)

介绍

  • 抽象方法:将共性的行为(方法)抽取到父类之后,由于每一个子类执行的内容是不一样,所以,在父类中不能确定具体的方法体。该方法就可以定义为抽象方法
  • 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

定义格式

  • 抽象方法的定义格式

    public abstract 返回值类型 方法名(参数列表);
    
  • 抽象类的定义格式

    public abstract class 类名{}
    

注意事项

  • 抽象类不能实例化

    不能实例化意思是不能创建对象

  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  • 抽象类可以有构造方法

    当创建子类对象时,可以给子类对象赋值

  • 抽象类的子类

    要么重写抽象类中的所有抽象方法

    要么是抽象类

练习

编写带有抽象类的标准Javabean类

青蛙frog 属性:名字,年龄 行为:吃虫子,喝水

狗dog 属性:名字,年龄 行为:吃虫子,喝水

public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void eat();

    public void drink(){
        System.out.println("喝水");
    }
}

抽象父类Animal,其中eat在每个子类的具体行为不一样所以设为抽象方法,在子类中进行强制重写。drink方法在子类中的具体方法一样不需要根据自雷进行单独重写,没有进行抽象化

//frog子类
public class frog extends Animal{
    public frog() {
    }

    public frog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃虫子");
    }

}
//dog子类
public class dog extends Animal{
    public dog() {
    }

    public dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("吃骨头");
    }
}

子类已经将父类中所有的抽象方法重写了,所以不需要再写成抽象类。

//测试类
public class Teat {
    public static void main(String[] args) {
        frog f=new frog("wa",1);
        System.out.println(f.getName()+" "+f.getAge());
        f.eat();
        f.drink();
        ……
    }
}

直接用子类创建对象,因为dog的具体写法跟frog差不多,就直接省略了

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

都不会的鲨

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值