Java基础语法(九)| 抽象与接口

前言

Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~

1. 抽象

  • 什么是抽象

父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。

Java语法规定,包含抽象方法的类就是抽象类。

父类中的方法应该不是具体的,具体的实现应该由子类来具体实现;但是父类中的方法一定是具有共性方法。

  • 什么是抽象方法

 只有方法的声明,没有方法体{}的方法,就是抽象方法。

  • 什么是抽象类

抽象方法所在的类必定是一个抽象类。

 1.1 抽象类和抽象方法

抽象方法:

使用abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。

  • 定义格式

修饰符 abstract 返回值类型 方法名 (参数列表);

  • 示例
public abstract void run();

 抽象类:

 如果一个类包含抽象方法,那么该类必须是抽象类。

  • 定义格式

 public abstract class 类名字 {   
}

  • 代码示例
public abstract class Animal {
    public abstract void run();
}

1.2 抽象的使用

具体的子类继承抽象的父类必须重写父类所有的抽象方法

抽象的子类继承抽象的父类,不用再去重写父类的所有抽象方法,这种是没有意义。

  • 代码示例:
/**
 * @Desc: 抽象类中可以有抽象方法,也可以有非抽象方法
 *        有抽象方法的类,这类一定是一个抽象类
 */
public abstract class Animal {

    //抽象类有构造方法吗? 有
    public Animal(){}

    //抽象类可以实例化 不能

    /**
     * 抽象方法一定是共有,只不过每个子类实现的方式不一样
     */
    public abstract void eat();

    public abstract void run();

    public void show(){
        System.out.println("我是动物中show方法");
    }
}
/**
 * @Desc:  子类如果是一个具体的类,必须重写父类中所有抽象方法
 */
public class Cat extends Animal {

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

    @Override
    public void run() {
        System.out.println("猫走猫步");
    }
}

/**
 * @Desc:  子类如果是抽象的,不需要重写父类中的抽象方法
 */
public abstract class Dog extends Animal {
}
/**
 * @Desc:  如果子类继承抽象类,抽象类中有抽象方法必须要重写,有非抽象方法,直接继承
 */
public class CatTest {
    public static void main(String[] args) {

        //抽象类本身是不可以实例化
        // Animal an = new Animal();

        Cat c = new Cat();
		//重写抽象类中的方法
        c.eat();
        c.run();
        //直接继承过来的show方法
        c.show();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

呆呆不呆~

你的鼓励是我最开心的事情~

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

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

打赏作者

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

抵扣说明:

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

余额充值