基础第一阶段day11——final、匿名内部类习题

本文介绍了Java中的final关键字和匿名内部类的相关知识点,并提供了四道习题进行深入理解。第一题指出final成员变量在构造方法中再次赋值会导致编译错误。第二题阐述了匿名内部类的创建规则,如每个匿名内部类只能创建一次对象,可以在方法内部或参数上定义,且其方法可以多次调用。第三题要求通过静态方法创建并返回一个实现了特定接口的对象,该对象的show方法打印'HelloWorld'。第四题解释了final修饰符的使用规则,包括可修饰类、方法和变量,以及final变量的赋值限制。总结了final和abstract的适用场景和特性。

第一题
判断下面代码的输出结果

public   class Animal {
    public  final  int a=10;

    public Animal() {
        a=20;
    }
    public Animal(int a) {
        this.a=a;
    }
}
public class Test {
    public static void main(String[] args) {
        Animal animal=new Animal(3);
        System.out.println(animal.a);
    }
}

A:10
B:20
C:编译出错
D:运行出错

解析:

答案是 C
编译出错,因为final成员变量只能赋值一次
类里面的final成员变量a已经赋值过了,构造方法里面就不能再赋值
因此直接编译报错

============================================================================
第二题
判断下列语句是否正确
A:一个匿名内部类,只会创建一个对象

B:匿名内部类只能在方法内部定义

C:匿名内部类对象的方法只能调用一次

解析
A:正确,匿名内部类是实现类没有名字,每次创建匿名内部类,都是一个新的没有名字的实现类,因此每个匿名内部类只能创建一次对象。

B:错误,匿名内部类还可以在方法参数上面定义

C:匿名内部类创建之后,可以多次调用方法

============================================================================
第三题:分析以下需求,并用代码实现

interface Inter {
	void show(); 
}
class Outer { 
	//补齐代码 
}
public class OuterDemo {
	public static void main(String[] args) {
		  Outer.method().show();
	  }
}

要求在控制台输出HelloWorld

解析:
1.通过Outer类名直接调用method方法,说明method方法是静态方法

2.调用method方法后,可以调用show方法,说明method方法的返回值是一个Inter类型

3.在method方法内部,产生一个Inter接口的子类对象返回

4.产生Inter的子类对象时,要重写show方法,show方法内部实现的功能是打印HelloWorld

public class Outer {
    public static Inter method(){
        Inter inter=new Inter() {
            @Override
            public void show() {
                System.out.println("Helloword");
            }
        };
        return inter;
    }
}

============================================================================

第四题:下面说法正确的是()
A、final可修饰类、属性、方法
B、abstract可修饰类、属性、方法
C、定义抽象方法需有方法的返回类型、名称、参数列表和方法体
D、用final修饰的变量,在程序中可对这个变量的值进行更改

A正确,
final修饰类,往下讲,不能被继承,类中方法不能被重写;
往上讲,可以继承父类,可以重写父类的方法。
final修饰方法,是最终方法,只能被继承,不能重写。
final修饰局部变量,是基本类型时只能赋一个具体值且不能再改变,
是引用类型时只能赋一次地址值且不能再改变。
final修饰成员变量,可以直接赋值,也可以通过构造方法赋值但是必须保证所有构造方法都进行了赋值。
选A

B错误,abstract可以修饰类,是抽象类;
可以修饰方法,是抽象方法;
不能修饰属性,就是成员变量。

C错误,抽象方法没有方法体。

D错误,被final修饰的变量,只能赋值一次,不可再改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值