一、题目分享
下面ABCDE中那些函数可以存在于Demo的子类中?
class Demo{
int show(int a,int b){
return 0;
}
}
A.public int show(int a,int b){return 0;}
B.private int show(int a,int b){return 0;}
C.private int show(int a,long b){return 0;}
D.public short show(int a,int b){return 0;}
E.static int show(int a,int b){return 0;}
二、解题思路
方法重写的概念:
子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样,返回类型可以不一样,但是必须是父类返回类型的子类)。
由于方法重写的子类方法访问权限不能比父类方法访问权限更低(public > protected > default(默认) > private),Demo的权限修饰为default,所以Demo的子类中函数不能用private,B排除,A可以。
由于C的参数类型与Demo中不同,不属于方法重写,属于新方法,也可以存在。
虽然D的返回值类型和Demo不同,但返回类型short和int同级,不是int的子类,不构成方法重写,也不构成方法重载,所以不能存在于Demo的子类中。
而E被static静态修饰,只能访问静态成员方法,Demo是非静态的,所以也无法存在于Demo的子类中。
三、正确答案
该题的正确答案为:A、C