(1)编写一个Athlete类。该类包含三个成员变量name、sport和medal,分别代表一个运动员的姓名、最擅长的运动项目名称和在2023年亚运会获得的奖牌数量。在该类中重写Object类的toString方法,当调用它重写的toString方法时,输出这个运动员的姓名、运动项目和奖牌数量。
package 必实验2;
//定义Athlete类
class Athlete
{String name; //运动员的姓名String sport;//运动项目int medal; //金牌数量//含参构造函数,给成员变量赋值public Athlete(String a,String b,int c) {name = a;sport = b;medal = c;}//重写Object类的toString方法public String toString(){String result;result = "姓名:"+name+"\n"+"运动项目:"+sport+"\n"+"金牌数量:"+medal;return result;}
}
public class task1 {public static void main(String[] args) {//创建一个Athlete的对象athleteAthlete athlete;athlete = new Athlete("王楚钦","乒乓球",4);System.out.println(athlete.toString());}
}
(2)在一个包中定义一个默认访问权限控制的类DefaultClass,然后在该包以及另一个包中分别定义类来测试DefaultClass类中的private, default, protected和public数据成员的访问控制能力。
总结:
同一个包中的类,无需import即可访问DefaultClass类,且可以访问DefaultClass类中public和protected成员变量以及public成员方法,但是不可以访问另一个包中的默认访问权限的类。
package task2;class DefaultClass {//分别定义private,protected,public三个成员变量private int private_id;protected String protected_phoneNumber;public String public_gender;public DefaultClass(int a,String b,String c){private_id = a;protected_phoneNumber = b;public_gender = c;}//展示成员变量的各个值public void Display(){System.out.println("private_id:"+private_id);System.out.println("protected_phoneNumber:"+protected_phoneNumber);System.out.println("public_gender:"+public_gender);}
}
package task2;public class Test_DefaultClass {public static void main(String[] args) {//声明defaultClass对象DefaultClass defaultClass = new DefaultClass(100,"33045364", "男");//测试private实例,不可访问//System.out.printfln("defaultClass.private_id:"+defaultClass.private_id ); //测试protected实例,可访问System.out.println("defaultClass.protected_phoneNumber:"+defaultClass.protected_phoneNumber ); //测试public实例,可访问System.out.println("defaultClass.public_gender:"+defaultClass.public_gender );//测试public方法,可访问defaultClass.Display();}
}
package 必实验2;import task2.DefaultClass;public class Test_task2 {static public void main(String []args) {//声明defaultClass对象,不可创建DefaultClass p2 = new DefaultClass(100,"33045364", "男");//测试private实例,不可访问//System.out.printfln("p2.private_id:"+p2.private_id ); //测试protected实例,不可访问//System.out.println("p2.protected_phoneNumber:"+p2.protected_phoneNumber ); //测试public实例,不可访问//System.out.println("p2.public_gender:"+p2.public_gender );//测试public方法,不可访问//p2.Display();}
}
(3)在一个包中定义一个public访问权限控制的类PublicClass,然后在该包以及另一个包中分别定义类来测试PublicClass类中的private, default, protected和public数据成员的访问控制能力。
总结:
同一个包中的类,无需import即可访问PublicClass类,且可以访问PublicClass类中public和protected成员变量以及public成员方法;不同包中的类,需要import PublicClass所在的包才能访问,且可以访问PublicClass类中public成员变量以及public成员方法,但是不可以访问protected成员变量了。
package task3;public class PublicClass {//分别定义private,protected,public三个成员变量private int private_a;protected int protected_b;public int public_c;public PublicClass(int a,int b,int c){private_a = a;protected_b = b;public_c = c;}//展示成员变量的各个值public void Display(){System.out.println("private_a:"+private_a);System.out.println("protected_b:"+protected_b);System.out.println("public_c:"+public_c);}
}
package task3;public class Test_PublicClass {static public void main(String []args) {//声明PublicClass对象PublicClass publicClass = new PublicClass(1,2,3);//测试private实例,不可访问//System.out.printfln("publicClass.private_a:"+publicClass.private_a ); //测试protected实例,可访问System.out.println("publicClass.protected_b:"+publicClass.protected_b ); //测试public实例,可访问System.out.println("publicClass.public_c:"+publicClass.public_c );//测试public方法,可访问publicClass.Display();}
}
package 必实验2;import task3.PublicClass;public class Test_task3 {static public void main(String []args) {//声明PublicClass对象PublicClass p3 = new PublicClass(1,2,3);//测试private实例,不可访问//System.out.printfln("p3.private_a:"+p3.private_a ); //测试protected实例,不可访问//System.out.println("p3.protected_b:"+p3.protected_b ); //测试public实例,可访问System.out.println("p3.public_c:"+p3.public_c );//测试public方法,可访问p3.Display();}
}