SCJP_104——题目分析(1)
1.
1) public class ReturnIt{
2) returnType methodA(byte x, double y){
3) return (short)x/y*2;
4) }
5) }
what is valid returnType for methodA in line 2?
这一题考的是Java中的类型转换。
在这里,自需要看第(3)据代码就行了。分析以下这一行代码
(short)x / y * 2
这一行代码对 x 进行类型转换,将 byte 类型的 x 转换成 short 类型,进行了类型提升。
y 是 double 类型,2 是字面值,在 Java 中整型的字面值默认为 int 类型,所以这里的 2 为 int 类型。
这一行代码中,double 类型是最高的数据类型,根据类型自动提升原则,上面的这一行代码的返回值类型为 double。
所以正确答案为:double
2.
1) class Super{
2) public float getNum(){return 3.0f;}
3) }
4)
5) public class Sub extends Super{
6)
7) }
which method, placed at line 6, will cause a compiler error?
A. public float getNum(){return 4.0f;}
B. public void getNum(){}
C. public void getNum(double d){}
D. public double getNum(float d){return 4.0d;}
这一题考的是Java中的方法重载(overload)和方法重写(override)的区别。
所谓方法重载:
1、方法名相同
2、参数列表不同。(包括参数个数不同、参数类型不同、参数顺序不同)
但是,注意:方法重载与方法返回值类型无关,只要满足了1和2两个条件,就是方法重载。而且,访问控制符也不会影响方法重载。
所谓方法重写:
1、方法名相同
2、参数列表相同
3、方法返回值相同
方法体可以一样,也可以不一样。比如:
class Super
{
public float getNum()
{
return 3.0f;
}
} public class Sub extends Super
{
@Override
public float getNum()
{
return 3.0f;
}
}
但是,注意,
1、子类重写父类的方法,那么子类方法的访问控制符的权限范围只能比父类的大或者平级,不能比父类方法的访问权限小。
2、父类的私有方法不能被子类覆盖,比如
class Super
{
private float getNum()
{
return 3.0f;
}
} public class Sub extends Super
{
private float getNum() // 这样不算是方法重写
{
return 3.0f;
}
}
3、子类重写方法抛出的异常,不能比父类抛出的异常要多,也就是说子类重写方法抛出的异常的范围不能大于父类的方法,但是可以是同级别的。
class Super
{
public float getNum() throws IOException, FileNotFoundException
{
return 3.0f;
}
} public class Sub extends Super
{
@Override
public float getNum() throws IOException, UnknownHostException // 这样写是可以的
{
ServerSocket socket = new ServerSocket(1234);
return 0;
}
}
class Super
{
public float getNum() throws IOException, FileNotFoundException
{
return 3.0f;
}
} public class Sub extends Super
{
@Override
public float getNum() throws IOException, Exception // 这样写是错误的
{
ServerSocket socket = new ServerSocket(1234);
return 0;
}
}
class Super
{
public float getNum() throws IOException, FileNotFoundException
{
return 3.0f;
}
} public class Sub extends Super
{
@Override
public float getNum() throws Exception // 这样写也是错误的
{
ServerSocket socket = new ServerSocket(1234);
return 0;
}
}
4、父类的方法不能被子类覆盖为静态方法。也不能父类为静态方法,而子类却没有覆盖为静态方法。自有父类的方法是静态的,而子类覆盖的时候也是静态的,这昂才算是正确的方法重写。
class Super
{
public float getNum()
{
return 3.0f;
}
} public class Sub extends Super
{
public static float getNum() // 这是错的
{
return 0.0f;
}
}
5、父类的私有(private)方法不能被子类覆盖。这是因为由于 private 关键字决定的,用 private 修饰的属性或者方法,只能被本类访问。
6、父类的抽象方法可以被子类通过两种途径覆盖(即实现和覆盖) // TODO 不理解,先放着
7、父类的非抽象方法可以被覆盖为抽象方法 // TODO 不理解,先放着
所以正确答案为:C
SCJP_104——题目分析(1)的更多相关文章
- SCJP_104——题目分析(5)
18. public class Test { public static void add3(Integer i) { int val=i.intvalue(); val+=3; i=new Int ...
- SCJP_104——题目分析(2)
3. public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x=y) System.out ...
- SCJP_104——题目分析(4)
14. which three are valid declaraction of a float? ADFA. float foo=-1; B. float foo=1.0; C. float fo ...
- SCJP_104——题目分析(3)
11. what is reserved words in java?A. run B. default C. implement D. import Java 中,给标识符取名的时候,不能使用关键字 ...
- SCTF 2014 pwn题目分析
因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目.主防项目目前先搁置起来了,等比赛打完再去搞吧. 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很 ...
- 路由器漏洞复现分析第三弹:DVRF INTRO题目分析
这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF: ...
- 二分查找总结及部分Lintcode题目分析 2
Search in a big sorted array,这个比之前的二分法模板多了一个很不同的特性,就是无法知道一个重要的条件end值,也是题目中强调的重点 The array is so big ...
- 【算法】题目分析:Aggressive Cow (POJ 2456)
题目信息 作者:不详 链接:http://poj.org/problem?id=2456 来源:PKU JudgeOnline Aggressive cows[1] Time Limit: 1000M ...
- *CTF babyarm内核题目分析
本文从漏洞分析.ARM64架构漏洞利用方式来讨论如何构造提权PoC达到读取root权限的文件.此题是一个ARM64架构的Linux 5.17.2 版本内核提权题目,目的是读取root用户的flag文件 ...
随机推荐
- 软工UML学习札记
UML模型由:事物.关系和图组成 (1)类(class)── 类用带有类名.属性和操作的矩形框来表示. (2)主动类(active class)── 主动类的实例应具有一个或多个进程或线程,能够启动控 ...
- 《C专家编程》读书笔记
第一章 const float* 表示一个指向float类型常量的指针 第二章 1. 在c语言中const并非真正表示“常量”,在数组定义与case中不可以使用 2. case的一些问题 1: #in ...
- poj 2187 凸包加旋转卡壳算法
题目链接:http://poj.org/problem?id=2187 旋转卡壳算法:http://www.cppblog.com/staryjy/archive/2009/11/19/101412. ...
- PHP安全编程:网站安全设计的一些原则(转)
深度防范 深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的. 深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域.使用过备份伞的跳伞队员可以证明有冗余安全措 ...
- HDFS Users Guide--官方文档
HDFS Users Guide Purpose Overview Prerequisites Web Interface Shell Commands DFSAdmin Command Second ...
- [转] Linux中gcc,g++常用编译选项
http://blog.sina.com.cn/s/blog_5ff2a8a201011ro8.html gcc/g++ 在执行编译时,需要4步 1.预处理,生成.i的文件[使用-E参数] 2.将预处 ...
- 【教训】rm -fr ./* 教训
昨晚犯了一个重大错误,运行了 rm -rf ./* 本来是要删除一个不重要的目录的,结果在它的父目录下运行了上面命令,结果...都没了... 幸好数据库文件没有被删掉,数据还在,网站程序被删掉了,不久 ...
- Linux开发工具之Makefile(上)
二.makefile(上) 01.make工具 利用make工具可以自动完成编译工作.这些工作包括:如果修改了某几 个源文件,则只重装新编译这几个源文件:如果某个头文件被修改了,则 重新编译所有包 ...
- Vijos P1325桐桐的糖果计划(有向图双连通分量)
/*重边不能删 不能删 不能删...*/ #include<iostream> #include<cstdio> #include<cstring> #define ...
- css标签选择器
/*标签选择器*/ input[type="text"] { width: 60%; } </style>