如何在Java中定义一个名为Phone的公共类,该类有一个受保护的String类型的成员变量phoneNum,并实现通过构造函数Phone(String phoneNum)来初始化phoneNum?
时间: 2024-10-27 17:08:28 浏览: 58
在Java中,你可以按照以下步骤定义一个名为Phone的公共类,它有一个受保护(protected)的String类型成员变量phoneNum,并通过构造函数Phone(String phoneNum)来进行初始化:
```java
public class Phone {
// 定义受保护的phoneNum成员变量
protected String phoneNum;
// 构造函数,用于初始化phoneNum
public Phone(String phoneNum) {
this.phoneNum = phoneNum; // 使用this关键字引用当前对象的实例变量
}
// 如果需要提供getter和setter方法,可以添加如下:
// 获取电话号码的方法
public String getPhoneNumber() {
return phoneNum;
}
// 设置电话号码的方法
public void setPhoneNumber(String phoneNumber) {
this.phoneNum = phoneNumber;
}
}
```
在这个例子中,`protected`修饰符使得`phoneNum`可以在其所在包及其子包内被访问,而不会暴露给外部包。当你创建Phone对象并传递字符串到构造函数时,phoneNum会被初始化。
相关问题
用java编写:【问题描述】编程实现如图所示的类间关联关系(双向关联) Contact -contactId:int Phone -name:String -phoneNum:String -isFreqContact:boolean 1 1 ..* -phoneArray:ArrayList<Phone> -type:String -aContact:Contact getPhones():arrayList addPhoneToContact(aPhone:Phone):void 【输入形式】 输入分4行, 第1行:联系人ID联系人姓名 第2行:第一个联系电话号码联系电话类型 第3行:第二个联系电话号码联系电话类型 第4行:第三个联系电话号码联系电话类型
以下是Java代码实现:
```java
import java.util.ArrayList;
class Contact {
private int contactId;
private String name;
private ArrayList<Phone> phoneArray = new ArrayList<Phone>();
public Contact(int contactId, String name) {
this.contactId = contactId;
this.name = name;
}
public ArrayList<Phone> getPhones() {
return phoneArray;
}
public void addPhoneToContact(Phone aPhone) {
phoneArray.add(aPhone);
aPhone.setContact(this);
}
// getter and setter methods
}
class Phone {
private String name;
private String phoneNum;
private boolean isFreqContact;
private String type;
private Contact aContact;
public Phone(String name, String phoneNum, String type) {
this.name = name;
this.phoneNum = phoneNum;
this.type = type;
}
public void setContact(Contact aContact) {
this.aContact = aContact;
}
// getter and setter methods
}
public class Main {
public static void main(String[] args) {
// 读入联系人信息
String[] contactInfo = new String[2];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 2; i++) {
contactInfo[i] = sc.nextLine();
}
Contact aContact = new Contact(Integer.parseInt(contactInfo[0]), contactInfo[1]);
// 读入电话信息
for (int i = 0; i < 3; i++) {
String[] phoneInfo = sc.nextLine().split(" ");
Phone aPhone = new Phone(phoneInfo[0], phoneInfo[1], phoneInfo[2]);
aContact.addPhoneToContact(aPhone);
}
// 输出联系人的电话信息
ArrayList<Phone> phones = aContact.getPhones();
for (Phone phone : phones) {
System.out.println(phone.getName() + " " + phone.getPhoneNum() + " " + phone.getType());
}
}
}
```
输入样例:
```
123 John
12345678901 mobile
98765432109 home
13579246810 work
```
输出样例:
```
12345678901 mobile
98765432109 home
13579246810 work
```
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class BusinessLeave { public static String application(String location,String phonenum,String start,String end,String mode,String number) throws ParseException{ String msg=""; if(ValidLocation(location)){ if(ValidPhoneNum(phonenum)){ if(ValidSDate(start)&&ValidEDate(end,start)){ if(mode=="自驾"||mode=="火车"||mode=="飞机"){ if(ValidNum(number)) msg="提交申请"; else msg="同行人数无效"; }else msg="出行方式未选择"; }else msg="日期无效"; }else msg="联系电话无效"; }else msg="出差地无效"; return msg; } public static boolean ValidLocation(String a){ if(a!=null&&a.length()>0) return true; else return false; } public static boolean ValidPhoneNum(String num){ String regex="^1[3|4|5|7|8][0-9]{9}$"; if(num.matches(regex)) return true; else return false; } public static boolean ValidNum(String num){ String regex="[0-9]+"; if(num.matches(regex)&&Integer.valueOf(num)>0) return true; else return false; } public static boolean ValidSDate(String s) throws ParseException{ Date start=new SimpleDateFormat("yyyy-MM-dd").parse(s); Date now=new Date(); if(start.after(now)==true) return true; else return false; } public static boolean ValidEDate(String e, String s) throws ParseException{ Date start=new SimpleDateFormat("yyyy-MM-dd").parse(s); Date end=new SimpleDateFormat("yyyy-MM-dd").parse(e); Calendar c = Calendar.getInstance(); c.setTime(start); c.add(Calendar.DAY_OF_MONTH, 30); Date deadline=c.getTime(); if(end.after(start)==true&&end.before(deadline)==true) return true; else return false; } }
这是一个 Java 类 BusinessLeave,它包含了一个 application 方法和多个静态方法用于验证输入参数的合法性。application 方法接收六个参数:location(出差地点)、phonenum(联系电话)、start(出发日期)、end(返回日期)、mode(出行方式)和 number(同行人数),并返回一个提示信息 msg,用于指示申请是否提交成功。
在 application 方法中,首先通过调用 ValidLocation、ValidPhoneNum、ValidSDate 和 ValidEDate 方法来验证输入参数的合法性;如果所有参数都合法,则根据出行方式和同行人数的合法性来决定 msg 的值。如果出行方式不合法,则 msg 为 "出行方式未选择";如果同行人数不合法,则 msg 为 "同行人数无效";否则 msg 为 "提交申请"。
ValidLocation、ValidPhoneNum、ValidSDate 和 ValidEDate 方法分别用于验证出差地点、联系电话、出发日期和返回日期的合法性。其中 ValidLocation 方法只需判断出差地点是否为 null 或空字符串即可;ValidPhoneNum 方法使用正则表达式来判断联系电话是否合法;ValidNum 方法用于验证同行人数的合法性,只需判断其是否为正整数即可;ValidSDate 和 ValidEDate 方法使用 SimpleDateFormat 类将输入的日期字符串转换为 Date 对象,然后与当前日期或出发日期进行比较来判断其合法性。
总体来说,这是一个用于验证出差申请参数合法性的简单 Java 类。
阅读全文