抽象与接口

文章介绍了Java编程中抽象类和接口的概念及使用。抽象类用于规范子类行为,强制子类重写抽象方法,可以包含构造器和成员变量。接口则提供了一种更灵活的规范方式,包含抽象方法和默认方法,允许类实现多个接口。文中通过示例代码展示了抽象类的继承和接口的实现。
摘要由CSDN通过智能技术生成

这一周,我进行了接口的学习,当然了,学习是循序渐进的,我首先学习了抽象类与抽象方法,一个抽象类可以没有抽象方法,但是有抽象方法的类一定要是抽象类,抽象类作为父类,在抽象类中使用abstract关键字修饰抽象方法,作用是可以让子类必须重写父类这个方法,在我的理解当中,抽象类的最大的作用就是规范性,值得一提的是,抽象类中是可以定义构造方法以及成员变量的,可以让子类进行赋值。请看如下代码:
我首先写了一个抽象类:

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();
}

注意看,abstract修饰的eat方法,而且我并没有写方法体,这就是一个抽象方法。我写了一个子类,请看:

public class frog extends Animal implements Swim{
    public frog() {
    }

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

    @Override
    public void swim(){
        System.out.println("青蛙在游泳");
    }


    @Override
    public void eat(){
        System.out.println("青蛙在吃东西");
    }
}

忽略接口,请看抽象类的继承,我在子类中必须重写eat方法,否则就会报错。而子类也当然可以是一个抽象类,请看如下代码:

public abstract class oo extends Animal{
    public abstract void have();
}

如果子类仍然是一个抽象类,那么它就可以不重写父类Animal的方法。
接下来,谈谈我对接口的拙见。
所谓接口,就是一个类,里面写了很多的抽象方法,当然,里面也可以写一些默认方法,也可以有成员变量,但必须是public static final的,在我看来,接口的作用就是规范,和抽象类最大的区别就是接口更为灵活,灵活的点请看接下来的代码。那怎样定义一个接口呢,我们需要使用interface关键字。请看如下代码:

public interface Swim {
    public abstract void swim();
}

这是一个名为Swim的接口

public class rabbit extends Animal {

    @Override
    public void eat(){
        System.out.println("兔子在吃胡萝卜");
    }
}

public class Dog extends Animal implements Swim{
    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }
    @Override
    public void swim(){
        System.out.println("狗在狗刨");
    }
    @Override
    public void eat(){
        System.out.println("小狗在吃骨头");
    }
}

我写了狗和兔子两个动物,狗会游泳,所以我们是用implements关键字接入Swim接口,而兔子不会游泳,就不接入接口,在我看来,这是比抽象类灵活的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值