java通过克隆的方式创建对象

来源:互联网 发布:外星人源码论坛eenot 编辑:程序博客网 时间:2024/06/05 20:56


当单纯的使用  User user2=(User) user1.clone();时,会编译出错"The method clone() from the type Object is not visible"

是因为user类中的对象没法访问object类的clone()方法,因为clone在object中是被protected修饰的,当一个变量或是一个方法被protected修饰时,只能被同一个包或者是不同的包的子类可以访问,而“不同包的子类可以访问”真正的理解为,两个类不在同一个包中是,继承父类的子类且主调为子类的引用时才能访问父类用protected修饰的成员,在子类内部,主调为父类的引用时不能访问父类中被protected修饰的成员(属性或方法);


package com.Test;


public class User implements Cloneable{
    
    private String username;
    private String userpwd;
    
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getUserpwd() {
        return userpwd;
    }
    public void setUserpwd(String userpwd) {
        this.userpwd = userpwd;
    }    
    public static void main(String[] args) {
        User user1=new User();
        
        try {
            User user2=(User) user1.clone();
            
            user1.setUsername("a");
            user2.setUsername("a");
            System.out.println("user1"+user1);
            System.out.println("user2"+user2);
            
            System.out.println(user1.equals(user2));//false
            System.out.println(user1==user2);//false
            System.out.println("克隆成功");
        } catch (CloneNotSupportedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        
    }
    
    
    

}

原创粉丝点击