zoukankan      html  css  js  c++  java
  • [置顶] 顿悟JAVA,自己实现Object的Clone的约束关系(上)

    因protected 的理解,顿悟一些JAVA的原理,模拟了Object类的子类为什么在调用clone方法前实现Cloneable接口。

    这里不解释 ,上代码先。


    运行效果



    文件结构


    调用类

    package com.tarena.android.javabasic.useInterface;
    
    public class UseInterface {
    	
    	public static void main(String[] args) {
    		
    		SubclassFatherHaveAinterfaceTestA a = 
    				new SubclassFatherHaveAinterfaceTestA();
    		
    		
    		SubclassFatherHaveAinterfaceTestB b = 
    				new SubclassFatherHaveAinterfaceTestB();
    		
    		
    		try{
    			a.LikeClone();
    			b.LikeClone();
    			
    			
    		}catch(Exception e){
    			System.out.println(e.getMessage());
    		}
    
    	}
    
    }
    


    接口

    package com.tarena.android.javabasic.useInterface;
    
    public interface LikeCloneable {
    
    	//啥也没有 和 Cloneable一样的
    }
    

    基类

    package com.tarena.android.javabasic.useInterface;
    
    public class myclassUseFace  {
    
    	//模仿Object 类来实现自己的clone规则,子类必须实现某个接口,这里是LikeCloneable
    	protected void LikeClone() throws CloneNotSupportedException {
    		if(this instanceof LikeCloneable)
    		{
    			System.out.println("必须实现LikeCloneable接口才能调用我,这个对象显然是实现了这个接口才看到我");
    		}
    		else
    		{
    			CloneNotSupportedException e = new CloneNotSupportedException("没有实现接口的惩罚");
    			throw e;
    		}
    	}
    
    }
    

    子类1

    package com.tarena.android.javabasic.useInterface;
    
    public class SubclassFatherHaveAinterfaceTestA extends myclassUseFace implements LikeCloneable {
    
    	public void LikeClone(){
    		try {
    			super.LikeClone();
    		} catch (CloneNotSupportedException e) {
    			System.out.println(this.getClass().getName()+
    					"如果本对象的类内有实现LikeCloneable接口,那么这一句话就会出现");
    			
    		}
    	}
    }
    

    子类2

    package com.tarena.android.javabasic.useInterface;
    
    public class SubclassFatherHaveAinterfaceTestB extends myclassUseFace {
    
    	public void LikeClone(){
    		try {
    			super.LikeClone();
    		} catch (CloneNotSupportedException e) {
    			System.out.println(this.getClass().getName()+
    					"如果本对象的类内有实现LikeCloneable接口,那么这一句话就会出现");
    			e.printStackTrace();
    		}
    	}
    }
    






  • 相关阅读:
    2020 camp day0 -F
    2020 camp day2 -k
    扫描线 hdu1542
    Assign the task HDU
    快速排序模板
    Java中Thread的常用方法
    Java中多线程的创建
    二分模板
    main()的简单理解
    单例模式饿汉式和懒汉式的实现
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3281198.html
Copyright © 2011-2022 走看看