首页 > 试题广场 >

关于抽象类叙述正确的是? ( )

[单选题]

关于抽象类叙述正确的是? ( )


  • 抽象类不能实现接口
  • 抽象类必须有“abstract class”修饰
  • 抽象类必须包含抽象方法
  • 抽象类也有类的特性,可以被实例化
A.抽象类是可以实现接口的,而且抽象类也可以继承自抽象类
B.对
C.抽象类指有abstract修饰的class,其可以包含抽象方法,也可以不包含
D.抽象类和接口都是不能被实例化的,只有具体的类才可以被实例化

发表于 2017-07-14 19:17:15 回复(9)
自己总结的,有遗漏请私我指正,不知道为什么网上都说接口没有Main方法,然而我用IDEA和eclipse是可以的,不知道是不是我理解错了。

jdk1.8之前

接口

1.多实现

2.变量类型默认且只能为为public static final

3.函数类型默认且只能为public,只能有public类型的静态成员函数

4.非静态成员函数没有方法体,静态成员函数有方法体

5.子类必须实现所有接口函数

6.可以有main方法;可以new一个接口,需要在方法体中实现所有接口函数

7.没有构造器

 

抽象类

1.单继承

2.变量类型不限(静态变量+非静态变量)

3.函数类型不限(静态函数+非静态函数)

4.非静态函数包含没有方法体的抽象函数. 有方法体的普通函数

5.子类可以不覆写父类的抽象方法,但子类也要申明为抽象类;子类可以选择覆写父类的非抽象方法

6.可以有main方法;不可以new一个抽象类

7.可以有构造器

 

Jdk1.8

接口中可以有default类型的方法,实现类可以选择实现该方法

意义:默认方法的主要优势是提供一种拓展接口的方法,而不破坏现有代码。另一个优势为该方法是可选的,子类可以根据不同的需求Override默认实现。

发表于 2017-09-07 13:36:48 回复(4)
抽象类必须有“abstract class”修饰   这个说法好怪异,应该是abstract 去修饰class。。。
发表于 2018-02-28 16:50:10 回复(5)
A.抽象类是可以实现接口的,抽象类也可以继承自一个抽象类
B.这题的说法有点奇怪,我觉得说成必须有“abstract”修饰更好。不过影响不大,是正确的
C.抽象类并不一定都是抽象方法,甚至可以没有,但有抽象方法的类一定是抽象类
D.抽象类和接口都是不可实例化的
发表于 2021-12-10 09:51:32 回复(0)
抽象类其实是可以被实例化的,但是它的实例化方式并不是通过普通的new方式来创建对象,而是通过父类的应用来指向子类的实例间接地实现父类的实例化,因为子类在实例化之前,一定会先实例化它的父类。这样创建了继承抽象类的子类对象,也就把其父类(抽象类)给实例化了。

注意:接口与抽象类非常类似,但是它不可以被实例化,因为接口压根没有构造函数。



下面将通过一个简单的Demo来展示一下:

首先,定义一个抽象类B,包含抽象方法play()
public abstract class B {
    private String str;
    
    public B(String a){
        System.out.println("父类已经实例化");
        this.str = a;
        System.out.println(str);
    }
    
    public abstract void play();
}
然后,定义一个子类C去继承类B,并实现其中的抽象方法

public class C extends B{     public C(String c){         super(c);         System.out.println("子类已经被实例化");     }       @Override     public void play() {         System.out.println("我实现了父类的方法");     }          public static void main(String[] args){         B c = new C("c");     } }
运行结果如下:

父类已经实例化
c
子类已经被实例化


编辑于 2019-01-06 16:43:45 回复(0)
抽象类不一定都有抽象方法
发表于 2017-05-18 19:25:53 回复(0)
记住!!!
抽象类可以实现接口,也可以继承类(抽象类)
发表于 2018-10-27 19:29:17 回复(0)
抽象类不能被实例化
发表于 2017-07-10 23:10:51 回复(0)
首先抽象类是可以实现接口的,只是不能实例化对象。 再者子类如果不将父抽象类的全部抽象方法全部重写的话,仍然是抽象类,所以抽象类可以不包括抽象方法。 故选B。
发表于 2022-05-25 23:00:06 回复(0)
抽象类是可以实现接口的,而且抽象类也可以继承自抽象类
发表于 2021-05-24 17:04:16 回复(0)
记住了,有抽象方法的类一定是抽象类,抽象类不一定包含抽象方法
发表于 2020-07-10 08:25:44 回复(0)
选B

A,抽象类可以实现接口,而且对接口中抽象的方法,可以不全实现。
C,抽象类可以没有抽象方法,但是有抽象方法的类一定是抽象类。
D,抽象类和接口都都不能被实例化。
发表于 2018-06-29 11:22:09 回复(0)
选项A:抽象类可以实现接口,因为抽象类可以包含非抽象类方法。
选项B:没毛病,完全正确。
选项C:抽象类可以包含抽象方法和非抽象方法,并且抽象方法不声明修饰符时,默认为public abstract。一旦一个类中含有抽象方法,这个类必须为抽象类。
选项D:抽象类和接口都不能被实例化。
编辑于 2017-07-25 08:48:01 回复(0)
为什么不一定有抽象方法?
发表于 2017-07-14 08:22:38 回复(2)
抽象类当然要有abstract修饰
发表于 2017-06-05 19:52:19 回复(2)
抽象类和接口都是不能被实例化的,只有具体的类才可以被实例化
发表于 2021-12-20 10:54:20 回复(0)
我想请问一下各位大佬抽象类使用匿名内部类的方式不算是抽象类的实例化吗?
发表于 2023-08-07 22:09:13 回复(0)
抽象类是可以实现接口的,而且抽象类也可以继承自抽象类
发表于 2023-06-04 11:38:37 回复(0)
抽象类不一定包含抽象方法,但是有抽象方法的类一定是抽象类
发表于 2023-01-10 12:17:42 回复(0)
抽象类能实现接口,但抽象类和接口都不能被实例化。 抽象类不一定包含抽象方法,但有抽象方法的类必然是抽象类。
发表于 2022-09-22 09:39:02 回复(0)