java課后習題答案
java課本課后習題答案
答:父子類在同一包中時子類可以繼承父類的友好成員。
2、子類通過什么辦法,可以隱藏繼承的成員變量。
答:子類成員變量與父類成員變量同名。
3、子類重寫繼承方法的規則是什么?
答:重寫隱藏父類的方法需:返回的數據類型相同,參數的個數相同,并且類型相同。 如果重寫父類的方法后參數的個數或類型不同會出現子類方法的重載。
4.子類的構造方法的第一條語句是什么?
答:如果需要調用父類構造方法,則應是用super關鍵詞調用父類的構造方法。
5、子類一旦重寫了繼承的方法,就會隱藏繼承的方法。是這樣嗎?
答:不一定。在參數的個數或類型不同時會產生重載。如果只有返回值的類型不同,將會產生編譯錯誤。
(5)子類隱藏父類的方法,參數必須______相同并且__________相同.
答: 個數 ,類型
6、子類重寫繼承方法時,可以降低方法的權限嗎?
答:重寫繼承方法時不能降低訪問權限。
7、簡述關鍵字super的用法。
答:1)子類調用父類的構造方法。
2)子類對象引用被隱藏了的父類方法,或成員變量。
8.假設父類有一個方法:
Public double f(double x, double y){
return x+y; }
是否允許子類再聲明如下的方法:
Public float f(double x, double y){
return 23; }
答:不允許。
9、父類的final方法可以被子類重寫嗎?
答:不可以
10、什么類中可以有abstract方法?
答:被abstract修飾的類。接口中也可以有abstract方法
11、什么叫做對象的上轉型對象?
答:用子類的構造方法構造出來的對象,賦值給父類對象。
12、什么叫接口回調?
答:用實現接口的類創建的對象,賦值給該接口聲明的接口變量。
13、與類有關的匿名類一定是該類的子類嗎?與接口有關的匿名類一定是實現該接口的一個類嗎?
答:一定,因為類創建對象時,除了構造方法還有類體,此類體被認為是該類的一個子類去掉類聲明后的類體。即匿名類,匿名類就是一個子類。與接口的匿名類相同。一定是子類。
14、怎樣聲明一個泛型類?
答:我們可以這樣聲明一個泛型類:
class A 其中A時泛型的名稱,E是其中的泛型,即我們沒有指定E是何種類型的數據,它可以是任何對象或接口,但不能是基本數據類型。
15、閱讀下列程序,并說明輸出結果。
class NegativeIntegerException extends Exception{
String message;
public NegativeIntegerException(){
message="方法的參數值不是正整數"; }
public String toString(){
return message; } }
class MaxCommonDivisor{
public int getMaxCommonDivisor(int a, int b)throws NegativeIntegerException{
if(a<0||b<0)
throw new NegativeIntegerException();
int r=0;
if(a>b){
int t=a; a=b; b=t; }
r=a%b;
while(r!=0){
a=b;
b=r;
r=a%b; }
return b; } }
class MinCommonMultiple extends MaxCommonDivisor{
public int getMinCommonMultiple(int a, int b)throws NegativeIntegerException{
if(a<0||b<0)
throw new NegativeIntegerException();
int y=0;
int x=getMaxCommonDivisor(a,b);
y=(a*b)/x;
return y; } }
public class Example{
public static void main (String arg[]){
int maxCommonDivisor, minCommonMultiple;
MaxCommonDivisor max=new MaxCommonDivisor();
MinCommonMultiple min = new MinCommonMultiple();
try{
maxCommonDivisor=max.getMaxCommonDivisor(18,12);
System.out.println("最大公約數:"+ maxCommonDivisor);
minCommonMultiple=min.getMinCommonMultiple(18,12);
System.out.println("最小公倍數:"+minCommonMultiple);
maxCommonDivisor=max.getMaxCommonDivisor(-64,48);
System.out.println("最大公約數:"+maxCommonDivisor); }
catch(NegativeIntegerException e){
System.out.println(e.toString()); } } }
3。編寫一個類要求實現一個接口,該接口有3個abstract方法:
Public abstract void f( int x);
Public abstract void g(int x, int y);
Public abstract double h(double x);
要求在應用程序主類中使用該類創建對象,并使用接口回調調用方法f(), g() 和h(). 解:
interface A{
public abstract void f(int x);
public abstract void g(int x,int y); public abstract double h(double x); }
class A1 implements A{
public void f(int x){
System.out.println(x); }
public void g(int x,int y){
int z=x+y;
System.out.println(z); }
public double h(double x){ return x*x; } }
class A2 implements A{
public void f(int x){
System.out.println("Hello:"+x); }
public void g(int x,int y){
int z=x-y;
System.out.println(z); }
