1. 程式人生 > >Java介面練習題

Java介面練習題

1.說出下面程式的執行結果: 

interface InterfaceA 
{ 
    String S = "good "; 
    void f(); 
} 

abstract class ClassA 
{ 
    abstract void g(); 
} 

class ClassB extends ClassA implements InterfaceA
 { 
    void g() 
    { 
        System.out.print(S); 
    } 

    public void f() 
    { 
        System.out.print(" "+ S); 
    } 
} 

public class Test1
 { 
    public static void main(String[] args) 
    { 
        ClassA a = new ClassB(); 
        InterfaceA b = new ClassB(); 
        a.g(); 
        b.f(); 
    } 
} 


執行結果:good  good (中間是兩個空格)

2.程式設計題: 
利用介面做引數,寫個計算器,能完成加減乘除運算。 
(1)定義一個介面Compute含有一個方法int computer(int n, int m)。 
(2)設計四個類分別實現此介面,完成加減乘除運算。 
(3)設計一個類UseCompute,類中含有方法:public void useCom(Compute com, int one, int two),此方法能夠用傳遞過來的物件呼叫computer方法完成運算,並輸出運算的結果。 
(4)設計一個主類Test,呼叫UseCompute中的方法useCom來完成加減乘除運算。 

interface Computer
{
    int computer(int n, int m);
}

class Add implements Computer
{
    public int computer(int n, int m)
    {
        System.out.print(n+"+"+m+"=");
        return n+m;
    }
}

class Sub implements Computer
{
    public int computer (int n, int m)
    {
        System.out.print(n+"-"+m+"=");
        return n-m;
    }
}

class Mul implements Computer
{
    public int computer (int n, int m)
    {
        System.out.print(n+"*"+m+"=");
        return n*m;
    }
}

class Div implements Computer
{
    public int computer (int n, int m)
    {
        System.out.print(n+"/"+m+"=");
        return n/m;
    }
}
class UseComputer 
{
    public void useCom(Computer com, int one, int two)
    {
        System.out.println (com.computer(one, two));
    }
}
public class Test
{
    public static void main (String[] args)
    {
        UseComputer uc = new UseComputer();
        uc.useCom(new Add(), 10, 20);
        uc.useCom(new Sub(), 15, 10);
        uc.useCom(new Mul(), 10, 20);
        uc.useCom(new Div(), 15, 5);
    }
}

3.按如下要求編寫Java程式: 


(1)定義介面A,裡面包含值為3.14的常量PI和抽象方法double area()。 
(2)定義介面B,裡面包含抽象方法void setColor(String c)。 
(3)定義介面C,該介面繼承了介面A和B,裡面包含抽象方法void volume()。 
(4)定義圓柱體類Cylinder實現介面C,該類中包含三個成員變數:底圓半徑radius、 
圓柱體的高height、顏色color。 
(5)建立主類來測試類Cylinder。 

interface A
{
	final double pl = 3.14;
	double area();
}
interface B
{
	void setColor(String c);
}
interface C extends A, B
{
	void volume();
}
class Cylinder implements C
{
	private double radius;
	private double height;
	private String color;
	public Cylinder (double radius, double height)
	{
		this.height = height;
		this.radius = radius;
	}
	public double area ()
	{
		return pl*radius*radius;
	}
	public void setColor (String color)
	{
		this.color = color;
	}
	public void volume ()
	{
		System.out.println ("圓柱體積為:"+area()*height+"顏色為:"+this.color);
	}
}
public class Test
{
	public static void main (String[] args)
	{
		Cylinder cyl = new Cylinder(10.0, 20.0);
		cyl.setColor("紅色");
		cyl.volume();
	}
}

執行結果為:

 

4.(附加題-演算法) 
    一個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3.程式設計 找出1000以內的所有完數。

public class Test
{
	public static void main (String[] args)
	{
		for (int i=1; i<1000; ++i)
		{
			wanShu(i);
		}
	}
	public static void wanShu(int num)
	{
		int sum = 0;
		for (int i=num-1; i>0; --i)
		{
			if (num%i == 0)
			{
				sum+= i;
			}
		}
		if (sum == num)
		{
			System.out.print (num+" ");
		}
	}
}

執行結果: