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) {
}
}