(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的对象athlete
Athlete 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();
}
}