面向对象习题(附带解析)

这是一篇关于Java面向对象编程的习题集,涵盖了类、继承、数据域、final规则和static等多个核心概念,每个题目都有详细的解析,帮助读者巩固相关知识。
摘要由CSDN通过智能技术生成
  1. 以下代码执行后输出结果为( A

public class Test
{
    public static Test t1 = new Test();
    {
         System.out.println("blockA");
    }
    static
    {
        System.out.println("blockB");
    }
    public static void main(String[] args)
    {
        Test t2 = new Test();
    }
 }

    A.  blockA  blockB  blockA
    B.  blockA  blockA  blockB
    C.  blockB  blockB  blockA
    D.  blockB  blockA  blockB

解析:

静态域:用staitc声明,jvm加载类时执行,仅执行一次
构造代码块:类中直接用{}定义,每一次创建对象时执行。
执行顺序优先级:静态域,main(),构造代码块,构造方法。
1 静态域 :首先执行,第一个静态域是一个静态变量 public static Test t1 = new Test(); 创建了Test 对象,会执行构造块代码,所以输出blockA。然后执行第二个静态域(即静态代码块)输出blockB。
2 main():Test t2 = new Test()执行,创建Test类对象,只会执行构造代码块(创建对象时执行),输出blockA。
3 构造代码块只会在创建对象时执行,没创建任何对象了,所以没输出
4 构造函数:使用默认构造函数,没任何输出

2.根据以下代码段,执行new Child("John", 10); 要使数据域data得到10,则子类空白处应该填写

(D )。

class Parent {
    private int data;
    Parent(){}
    public Parent(int d){ data = d; }
}
class Child extends Parent{
    String name;
    Child(){}
    public Child(String s, int d){
    
        ___________________
        
        name = s;
    }
}
A.  data = d;
B. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Illus1ion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值