1.抽象类可以有构造函数吗?
答:可以
public abstract class AbstractTest {
AbstractTest(){
}
}
2.抽象类的构造函数的作用?
答:初始化抽象类内部声明的通用变量,并被各种实现使用。
以下例子是抽象类中初始化了id,在默认情况下,在调用子类的构造函数前是先要调用基类的构造函数的,这一点和非抽象的类一样。
public abstract class AbstractTest {
private String id;
AbstractTest(){
this.id = UUID.randomUUID().toString().replace("-", "");
}
public static void main(String[] args){
System.out.println("test");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
继承类使用:
public class AbstractDemo extends AbstractTest{
public static void main(String[] args){
AbstractDemo demo = new AbstractDemo();
System.out.println(JSON.toJSONString(demo));
}
}
//输出结果:{"id":"1b9190dbf7684fbe980347c2a0c6cb27"}
3.抽象类中是否可以有静态的main方法?
答:可以
抽象类没有对象概念所以不能被实例化.但可以定义属性方法,其中属性方法都可以是静态的.静态的意义其实就是在栈内存中只有一个,所以该成员也会先于对象出现在内存中,所以静态并没有违反抽象的原则.抽象类中可以定义静态成员.
public abstract class AbstractTest {
public static void main(String[] args){
System.out.println("test");
}
}
4.抽象类关键字abstract不可以和哪些关键字共存?
答:private、final、static
private:abstract是要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法,互相矛盾。
final:被final修饰的类不能有子类,因为抽象方法后期需要被子类重写,一旦加final无法重写。
static:使用static我们就可以直接通过类名访问抽象方法,由于抽象方法没有方法体,所以无法实现。
5.抽象类中是否可以不定义抽象方法?
答:可以,这么做的目的是不让其他类创建本类对象,交给子类完成。
6.Java抽象类可以实现接口吗?它们需要实现所有的方法吗?
答:可以。因为它们是抽象的,所以它们不需要实现所有的方法。
public interface InterfaceTest {
public abstract void abstractTest();
}
public abstract class AbstractTest implements InterfaceTest{
//可以不用实现方法
}
以上就是极悦java培训机构的小编针对“编程基础入门:java抽象类练习题”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习