抽象类必须要有抽象方法吗?

导读:本篇文章讲解 抽象类必须要有抽象方法吗?,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

答案是:不必须。

这个题目主要是考察对抽象类的理解。

说一下我个人的理解吧。

1.如果一个类使用了abstract关键字修饰,那么这个类就是一个抽象类。

2.抽象类可以没有抽象方法

3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。

4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。

  如下:     

public abstract class  MQTest {
    
}

 现在user这个类就是一个抽象类,如果直接 使用该类创建新对象是行不通的,编译直接报错。

抽象类必须要有抽象方法吗?

抽象类只能用其子类(该子类不能是抽象类)去创建新对象。

接下来我就用狗的例子来说明,先创建一个动物类(抽象类),然后创建一个狗类(抽象类),狗下面再分为金毛和二哈(非抽象类)。

动物类:

package com.xingli.abstractDemo;

import lombok.Data;

/**
 *@ClassName Animal
 *@Description 动物抽象类
 *@Auther William
 *@Date 2019/7/22 14:11
 *@Version 1.0
 */
@Data
public abstract class Animal {   
   //定义一个抽象的“让动物叫”的方法 
   public abstract void say();
}

狗类:

package com.xingli.abstractDemo;

/**
 *@ClassName Dog
 *@Description 狗类的抽象方法
 *@Auther William
 *@Date 2019/7/22 14:13
 *@Version 1.0
 */
public abstract class Dog extends Animal{
    //默认继承父类的say方法
}

金毛:

package com.xingli.abstractDemo;

/**
 *@ClassName JINMAODog
 *@Description 金毛
 *@Auther William
 *@Date 2019/7/22 14:16
 *@Version 1.0
 */
public class JINMAODog extends Dog{

    //实现父类的抽象方法
    @Override
    public void say() {
        System.out.println("金毛:我的名字叫金毛");
    }

}

二哈:

package com.xingli.abstractDemo;

/**
 *@ClassName ERHADog
 *@Description 二哈
 *@Auther William
 *@Date 2019/7/22 14:21
 *@Version 1.0
 */
public class ERHADog extends Dog{
    @Override
    public void say() {
        System.out.println("二哈:我的名字叫二哈");
    }
}

直接父类创建新对象:结果报错

抽象类必须要有抽象方法吗?

使用动物子类创建新对象,因为狗类也是抽象接口所以也报错

抽象类必须要有抽象方法吗?

使用非抽象子类创建新对象(正确)

public class Test {
    public static void main(String[] args) {
        Animal erhaDog = new ERHADog();
        Animal jinmaoDog = new JINMAODog();
        erhaDog.say();
        jinmaoDog.say();
    }
}

抽象类必须要有抽象方法吗?

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/97066.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!