首页 > 试题广场 >

哪个正确

[不定项选择题]
哪个正确
  • abstract类只能用来派生子类,不能用来创建abstract类的对象。
  • final类不但可以用来派生子类,也可以用来创建final类的对象。
  • abstract不能与final同时修饰一个类。
  • abstract类定义中可以没有abstract方法。

1、abstract类不能用来创建abstract类的对象;
2、final类不能用来派生子类,因为用final修饰的类不能被继承;
3、如2所述,final不能与abstract同时修饰一个类,abstract类就是被用来继承的;
4、类中有abstract方法必须用abstract修饰,但abstract类中可以没有抽象方法,接口中也可以有abstract方法。

编辑于 2017-05-16 22:30:36 回复(5)
选 ACD
A,抽象类和接口都不可以实例化。
B,final类不能被继承。
C,abstract不能和final共用修饰类。
D,抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类。
注意:abstract是用来修饰类和方法的:
    1. 修饰方法:abstract不能和private、final、static共用。
    2. 修饰外部类:abstract不能和final、static共用。(外部类的访问修饰符只能是默认和public)
    3. 修饰内部类:abstract不能和final共用。(内部类四种访问修饰符都可以修饰)
发表于 2018-06-27 09:02:46 回复(7)
抽象方法可以在接口和抽象类里面声明,抽象类可以没有抽象方法
发表于 2017-05-15 16:15:17 回复(0)
抽象方法还可以在接口中定义!!!
发表于 2017-05-29 10:54:54 回复(6)
  • final:修饰符,如果修饰类,此类不能被继承;如果修饰方法和变量,则表示此方法和此变量不能在被改变,只能使用。
  • abstract:修饰符,如果是修饰类,此类是抽象类,抽象类可以包含抽象方法,但没必要;抽象类不能直接实例化,需要被继承以后才能实例化,因为抽象类本身就是为了继承而设计的。
  • 定义抽象类就是让其他类继承的,如果用 final修饰 该类就不能被继承,这样彼此就会产生矛盾,所以 final 不能修饰抽象类,
发表于 2019-03-07 16:32:51 回复(0)
D选项有些问题,如果一个类中含有抽象方法,那么这个类必定是抽象类;反之未必成立,即抽象类中有无抽象方法都是没有影响的,有无非抽象方法也是没有影响的,综上,D选项应该是正确的
发表于 2017-08-13 11:50:17 回复(2)
1.abstract修饰的类A不能被实例化,即不能创建该类的对象,那么必须有其他类来继承A类,只有这样,A类的方法和属性才能被重写或使用;
2.final修饰的类不能被继承,即该类没有子类;
3.如果你用abstract和final修饰同一个类,按我们之前说的,abstract修饰的类要被其他类继承,final修饰的类不能被继承,所以相矛盾,得出结论
不能用abstract和final修饰同一个类
发表于 2022-04-01 15:39:36 回复(0)
我没选a,a不严谨,abstract类不只用来派生子类,也可以继承类,所以说只能是不严谨的。
编辑于 2021-02-23 10:59:11 回复(1)
abstract类只能用来派生子类
这句话是否有些不够严谨
abstract类不只能被继承,还可以直接拿来使用,可以动态绑定的实现多态
发表于 2022-03-18 18:03:17 回复(0)
ACD,抽象类中可以没有抽象方法,记住!记住!记住!
发表于 2021-05-12 17:54:22 回复(0)
抽象类只能用来派生子类这句话也正确吗, 不是也可以用作不让外界创建该类对象, 然后将方法定义为static, 直接通过类名调用方法吗
发表于 2021-03-23 09:53:37 回复(0)
1、说一下为什么抽象类不可以创建对象,明明抽象类都有构造方法了,为什么不可以创建对象???
2、直接上代码
abstract class MyAbstractClass{
    int a = 3;

    public MyAbstractClass(int a) {
        this.a = a;
    }
}


public class Test {
    public static void main(String[] args) {
        MyAbstractClass myAbstractClass = new MyAbstractClass(2) {
        };
        System.out.println(myAbstractClass.getClass().getName());
        MyAbstractClass myAbstractClass1 = new MyAbstractClass(3) {
        };
    }
}

3、这里边看似是在实例化抽象类,但是看看编译后的代码就可以知道真正执行了什么了
    1、首先编译之后总***生了四个文件                                           
    2、使用反编译软件查看 Test$1.class 和 Test$2.class 可以发现,这是两个实现了MyAbstractClass 的类, 也就是传说中的匿名内部类,就是在源代码中是看不到他们真实的类名的
package 抽象类可否实例化对象;

final class Test$2
  extends MyAbstractClass
{
  Test$2(int a)
  {
    super(a);
  }
}

得出结论 : 使用抽象方法构造出来的类是实现了这个抽象类的匿名内部类

发表于 2019-09-09 10:00:13 回复(1)
1.包含抽象方法的类必须是抽象的,但是,可以定义一个不包含抽象方法的抽象类(一般用于多个子类的基类,不可被new)
2.即使子类的父类是具体的,这个子类也可以是抽象的。
发表于 2018-07-16 21:08:38 回复(0)
上次遇到个题目说 抽象类不仅可以用来派生子类,还可以拿来做引用。所以 A前半句不对
发表于 2018-04-19 12:06:41 回复(1)
A. 我就想问下  
abstract class A{
}
class B{
    pulic static void main(String[] args){
        A a=new A() {};
    }
}
这样不算对象吗

D.好吧,interface中也是abstract方法
发表于 2017-08-11 15:48:45 回复(4)
我是第一。final类不可以被继承,所以不可以用来派生子类,所以B错误
编辑于 2023-04-11 11:38:16 回复(0)
A、抽象类只能被继承,不能创建abstract对象,不饿能被实例化
B、final修饰的类不能被继承
C、abstract类需要子类对其中的方法进行重写,和final冲突
D、absract类中可以没有abstract方法,但是abstract方法必须在abstract类中。同时可以在接口中
发表于 2023-02-21 10:26:21 回复(0)
A的意思就是抽象类不能实例化,这是对的,A正确
发表于 2022-04-07 09:21:42 回复(0)
D选项 抽象类可以没有抽象方法 不对吗
发表于 2022-04-02 12:53:15 回复(1)
A选项:
abstract class Animal {
    // 抽象方法,没有方法体,必须由子类实现
    abstract void sound();

    // 普通方法
    void sleep() {
        System.out.println("Sleeping...");
    }
}

// Dog 类继承自 Animal 并实现了抽象方法 sound()
class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        // 不能创建抽象类 Animal 的对象
        // Animal animal = new Animal(); // 这行代码会报错  (注意看这里

        // 可以创建 Dog 类的对象
        Animal dog = new Dog();
        dog.sound(); // 输出:Woof!
        dog.sleep(); // 输出:Sleeping...
    }
}


发表于 2024-09-11 19:50:37 回复(0)