小芳同学的错题总结(十)
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符合方法重写的规则,故也是合法的。
我还是好好总结一下方法重载和方法重写吧,方法重写,怕下次又栽跟头
方法重载:方法名相同,参数列表不同(参数的个数,参数的类型,参数传递的顺序(针对列表中有不同的参数类型)),下图解释参数传递的顺序(针对列表中有不同的参数类型)的意思
用处:方法重载通常用于创建完成一组任务相似但参数列表不同,通过参数列表的不同来决定调用哪一个函数。
注意事项:①返回类型、修饰符可以相同,也可不同。可以结合下面的图来理解
这些都是正确的,属于方法重载
②既可以发生在普通方法、构造方法上,可以发生在同类中,也可以发生在父子类中。红色字体要注意,这是极易被忽视的易错点。
方法重写(方法覆盖):两个方法的返回值类型、方法名、参数列表相同,对于访问权限,子类的权限应大于或等于父类中的权限,最好跟父类权限一致较好。通过下图中的例子来理解一下
这样的重写是正确的。
当子类重写父类方法时低于父类的权限,编译时会报错。
当子类重写父类方法时,返回类型不同时,也会出现编译报错。
当子类重写父类方法时,参数列表不同,虽然程序正确但已经不是方法重写了而是方法重载了。
用处:用于需要对所继承的父类方法进行扩展。
注意事项:①两个方法的返回值类型、方法名、参数列表相同(参数列表不同就不是方法重写了,而是为方法重载了)
②子类的权限应大于或等于父类中的权限,最好跟父类权限一致较好。
宝剑锋从磨砺出,梅花香自苦寒来。--冯梦龙
加油!小芳同学
这篇关于小芳同学的错题总结(十)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide