[四]java作業

1.構造函數可否爲private、protected?

import java.util.Random;
import java.util.Arrays;

class test {
	public static void main(String[] args) {
		tmp num1=new tmp();
		tmp num2=new tmp(1);
		tmp num3=new tmp(1.0);
		/*int[] num=new int[20];
		java.util.Random r=new java.util.Random();
		for (int i=0;i<num.length;i++) {
			 num[i]=(r.nextInt()%20+20)%20;
		}
		for (int i : num) {
			System.out.print(i+" ");
		}
		Arrays.sort(num);
		System.out.println("");
		for (int i : num) {
			System.out.print(i+" ");
		}//*/
	}
}

class tmp{
	public tmp()
	{
		System.out.println("public");
	}
	public tmp(int i)
	{
		System.out.println("private");
	}
	public tmp(double i)
	{
		System.out.println("protected");
	}
}

輸出:


2.什麼時候把父類中的成員屬性設置爲私有?舉例

不希望被外部調用的方法和成員應該設爲私有。

例:對外公開的api,無需將api內部調用的函數設爲public,只需設爲private就行了。

3.舉例public、private、defualt、protected在類、類的屬性、類的方法調用。

test.java

import show.show;

class test extends show{
	public static void main(String[] args) {
		test num=new test();
		num.showinfo1();
		num.showinfo4();
	}
}

show.java

package show;

public class show {

	public static void main(String[] args) {
		// TODO 自動生成的方法存根
		show num=new show();
		num.showinfo1();
		num.showinfo2();
		num.showinfo3();
		num.showinfo4();
	}
	public void showinfo1()
	{
		System.out.println("public");
	}
	private void showinfo2()
	{
		System.out.println("private");
	}
	void showinfo3()
	{
		System.out.println("default");
	}
	protected void showinfo4()
	{
		System.out.println("protected");
	}
}

class tmp extends show{
	public static void main(String[] args) {
		tmp num=new tmp();
		num.showinfo1();
		//num.showinfo2();//IDE提示不可訪問
		num.showinfo3();
		num.showinfo4();
	}
}

4.構造器互相調用

class test {
	private String strtmp;
	public test(int num){
		strtmp=num+" is ";
	}
	public test(String str){
		this(1);
		strtmp+=str;
	}
	public void show(){
		System.out.println(strtmp);
	}
	public static void main(String[] args) {
		test n=new test("int");
		n.show();
	}
}

輸出:

1 is int

5.Supper()調用父類指定構造器

class show{
    private int i;
    public show(){
        i=1;
    }
    public void showinfo(){
        System.out.println("i = "+i);
    }
}

class test extends show{
    public test(){
        super();
        showinfo();
        System.out.println("子類");
    }
    public static void main(String[] args) {
        test n=new test();
    }
}
輸出:

i = 1
子類


6.完成一個覆蓋的例子(修改其返回值)

class show{
	private int i;
	public void show(int i){
		this.i=i;
	}
	public int geti(){
		return i;
	}
}

class test extends show{
	private int i;
	public int geti(){
		return i*i;
	}
	public static void main(String[] args) {
	}
}


7.Super與this的使用,及兩個方法名一樣參數一樣,返回值不一樣  舉例

class show{
    public int getarea(int i,int j){
        return i*j;
    }
}

class test extends show{
    public double getarea(double i){
        return i*i;
    }
    public static void main(String[] args) {
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章