灏191 2023-06-15 19:45 采纳率: 50%
浏览 32
已结题

接口Cloneable的实现

为什么实现了Cloneable接口还是会报错啊?

//Person类
public class Person implements Cloneable{
    private String phoneNumber;
    private String Name;

    public void setPhoneNumber(String number){
        phoneNumber=number;
    }

    public String getPhoneNumber(){
        return phoneNumber;
    }

    public void setName(String name){
        Name=name;
    }

    public String getName(){
        return Name;
    }
    public Person(){
    }

    public Person(String number,String name){
        this.phoneNumber=number;
        this.Name=name;
    }

    public String toString(){
        return "Person类:"+"姓名为"+getName()+" 电话为"+getPhoneNumber();
    }

    public Object clone(){
        try{
            return super.clone();
        }
        catch(CloneNotSupportedException ex){
            return null;
        }
    }

}

//Person的子类Student
public class Student extends Person implements Cloneable{
    final static int FIRSTGRADE=1;
    final static int SECONDGRADE=2;
    final static int THIRDGRADE=3;
    final static int FOURTHYEAR=4;
    private int Grade;

    public Student(){
    }

    public Student(String number,String name,int grade){
        this.setPhoneNumber(number);
        this.setName(name);
        this.Grade=grade;
    }

    public void setGrade(int grade){
        Grade=grade;
    }

    public int getGrade(){
        return Grade;
    }
    public String toString(){
        return "Student类:"+"姓名为"+getName()+" 电话为"+getPhoneNumber()+" 年级为大学"+getGrade()+"年级";
    }

    public String displayObject(){
        return "to "+getName()+":请按时提交实验报告!";
    }

    public Object clone(){
        return super.clone();
    }
}

//Course类
import java.util.ArrayList;

public class Course implements Cloneable{
    private String courseName;
    private ArrayList<Student> student;
    private int numberOfStudents;

    public Course(String courseName){
        student=new ArrayList();
        this.courseName=courseName;
    }

    public void addStudent(Student newStudent){
        student.add(newStudent);
        numberOfStudents++;
    }

    public String getCourseName() {
        return courseName;
    }

    public ArrayList<Student> getStudent() {
        return student;
    }

    public int getNumberOfStudents() {
        return numberOfStudents;
    }

    public void dropStudent(Student aStudent){
        student.remove(aStudent);
        numberOfStudents--;
    }

    public Object clone(){
        try{
            Course course=(Course)super.clone();
            course.student=(ArrayList<Student>)student.clone();
            return course;
        }
        catch(CloneNotSupportedException ex){
            return null;
        }
    }

    public static void main(String[] args) throws CloneNotSupportedException {
        Course c1=new Course("SSD3-Java");
        Student s1=new Student("001","LiHua",3);
        c1.addStudent(s1);
        Course c2=(Course)(c1.clone());

        System.out.println(c1.getStudent()==c2.getStudent());
        System.out.println(c1.getStudent().equals(c2.getStudent()));

    }
}
  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-06-15 19:49
    关注

    Cloneable 接口要用 JDK的,不能自己定义

    img

    img

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 创建了问题 6月15日

悬赏问题

  • ¥15 uniapp 安卓开发
  • ¥15 Qemu相关,现在我想写一个自定义的I/O接口芯片,想使用qemu进行模拟验证
  • ¥15 企业 IOS App 上架
  • ¥15 wpf中combobox的选项恢复为原来的值
  • ¥15 ue5编辑器的在线的模型导入
  • ¥100 minio依赖安装报错问题
  • ¥15 求解决为什么json数据完整,却解析失败
  • ¥15 打开Smart schedule运行examples/transformer-xl/scripts/run_enwik8_base_moe.sh 报错
  • ¥15 求一个C# sm4 加密解密的代码
  • ¥20 centos7下载mysql提示DNS解析异常