Java抽象类(abstract、extends)

10 篇文章 0 订阅
5 篇文章 0 订阅

抽象类(abstract、extends)

抽象方法

● 抽象方法是一种特殊的方法:它只有声明,而没有具体的实现
● 抽象方法必须用abstract关键字进行修饰

抽象方法是必须写在抽象类当中(当一个类中含有了抽象方法时,那么这个类一定是抽象类)

抽象方法:只有方法的声明,没有方法体,也就是没有具体的实现
抽象方法一般都是定义在一些比较顶级的类当中,抽象方法的作用是说明,我有什么样的方法,而这个方法的具体实现就要靠子类来实现。

抽象类

什么是抽象类

● 如果一个类中没有包含足够的信息来描述一个具体的对象,那么这样的类就是抽象类。
(没有足够的信息)== 抽象方法
● 抽象类除了不能实例化对象之外,类的其他功能都是依然存在的,成员变量、成员方法、和构造方法。
● 用abstract修饰的类就是抽象类。如果某个类中包含有抽象反方法,那么这个类就必须是抽象类。

特点

● 抽象类是不能实例化,但是可以有构造方法,因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
● 抽象类是只能作为基类的,表示的是一种继承关系。继承抽象类的非抽象类(子类)是必须实现其中的所有抽象方法,而已实现方法的参数,返回值要和抽象类中的方法一样,否则,该类也必须声明为抽象类。

抽象类中是可以没有抽象方法的,有抽象方法一定就是抽象类

比如我定义一个Animal的这样一个类,因为Animal属于一个顶级的类,包括了自然界的所有动物,但是每个动物直接都是有差别的,单说动物吃东西,没有动物都有着不同的吃法,所以我们可以在Animal这个类当中,只说明动物会吃这种现状。具体的实现较给子类再使用

抽象类的意义可以理解为抽象类就是一种设计,针对于一个项目工程来说,肯定不是一个人完成的。
项目设计这呢,由专门的人去实现,项目的实现就由其他专业人完成,而抽象类就是项目设计好了大体架构(功能定义的声明),后面的实现就是继承这个抽象类来完成这个总的项目完成。
子类重写实现即可。

package com.functorone;

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        System.out.println("Animal:" + (dog.a = 10));     //通过继承调用到父类为抽象类的成员变量
        dog.eat();
        dog.sleep();    //通过继承调用了父类中的方法
    }
}




package com.functorone;

//这是一个抽象类
public abstract class Animal {
    int a;                      //抽象类是可以定义成员变量

    public Animal() {            //抽象类是可以拥有构造方法的,但是不能创建对象
        System.out.println("Animal类的无参构造方法");
    }

    public abstract void eat(); //抽象方法

    public void sleep() {    //抽象类中是可以写其他方法的
        System.out.println("Animal是需要睡觉的");
    }
}




package com.functorone;

//Dog类,继承Animal类
//一个类继承了抽象类:1、要么重写抽象类中的所有抽象方法。
//                2、要么以抽象类继承抽象类,继承可以不全部继承的
public class Dog extends Animal {

    public Dog() {   //创建Dog类的无参构造方法,调用出父类的构造方法
        super();
        System.out.println("Dog类中的无参构造方法");
    }

    @Override
    public void eat() {     //子类继承父类是抽象类的类时,必须全部重写父类的抽象方法
        System.out.println("Dog需要吃骨头");
    }
}

在这里插入图片描述
总结:抽象类,抽象方法。就是在软件开发过程中都是设计层次的概念。也就是说,设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并覆盖抽象方法,实现具体功能。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值