小芳同学的错题总结(十)
2021/10/5 23:14:47
本文主要是介绍小芳同学的错题总结(十),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.现在有如下一段代码
public class Test {
public int aMethod() {
static int i=0;
i++;
return i;
}
public static void main(String args[]) {
Test test = new Test();
test.aMethod();
int j = test.aMethod();
System.out.println(j);
}
}
A 编译通过,程序输出1 B 编译通过,程序输出0
C 编译失败 D 编译通过,程序输出2
答案:C
umm....,这道题,还是好好总结一下,首先,是不存在静态局部变量这个概念的,所以一看到static int i=0;这句代码,这题就已经知道答案了,选C。静态变量存放在方法区中,而方法内部中的局部变量是存在栈中。
2.题目:类Parent和Child定义如下:
1 .class Parent{
2. public float aFun(float a, float b) { }
3 .}
4 .class Child extends Parent{
5 .
6 .}
将以下哪种方法插入行5是不合法的。( )
A float aFun(float a, float b){ } B public int aFun(int a, int b) { }
C public float aFun(float p, float q){ } D private int aFun(int a, int b){ }
答案:A
这道题A错误,是因为A的权限比父类中aFun权限低,不符合方法重写的规则也不符合方法重载的规则,所以A是不合法的,而B、D为什么正确呢,因为它们随让不符合方法重写的规则,但它们符合方法重载的规则,所以是合法的,而C符合方法重写的规则,故也是合法的。
我还是好好总结一下方法重载和方法重写吧,方法重写,怕下次又栽跟头
方法重载:方法名相同,参数列表不同(参数的个数,参数的类型,参数传递的顺序(针对列表中有不同的参数类型)),下图解释参数传递的顺序(针对列表中有不同的参数类型)的意思
用处:方法重载通常用于创建完成一组任务相似但参数列表不同,通过参数列表的不同来决定调用哪一个函数。
注意事项:①返回类型、修饰符可以相同,也可不同。可以结合下面的图来理解
这些都是正确的,属于方法重载
②既可以发生在普通方法、构造方法上,可以发生在同类中,也可以发生在父子类中。红色字体要注意,这是极易被忽视的易错点。
方法重写(方法覆盖):两个方法的返回值类型、方法名、参数列表相同,对于访问权限,子类的权限应大于或等于父类中的权限,最好跟父类权限一致较好。通过下图中的例子来理解一下
这样的重写是正确的。
当子类重写父类方法时低于父类的权限,编译时会报错。
当子类重写父类方法时,返回类型不同时,也会出现编译报错。
当子类重写父类方法时,参数列表不同,虽然程序正确但已经不是方法重写了而是方法重载了。
用处:用于需要对所继承的父类方法进行扩展。
注意事项:①两个方法的返回值类型、方法名、参数列表相同(参数列表不同就不是方法重写了,而是为方法重载了)
②子类的权限应大于或等于父类中的权限,最好跟父类权限一致较好。
宝剑锋从磨砺出,梅花香自苦寒来。--冯梦龙
加油!小芳同学
这篇关于小芳同学的错题总结(十)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)