Board logo

标题: java小记和java内部类的使用 [打印本页]

作者: look_w    时间: 2019-2-19 15:54     标题: java小记和java内部类的使用

为什么学习java

我是一名iOS开发者,大学基本没写过代码,后来是走上了培训这条不归路。一开始工作时候的不适应和迷茫,到现在挺享受现在的工作。学习java是因为java语言在后端的统治力,以及我对后端业务的浓厚兴趣。我对人工智能有很好的期待,人工智能的发展的前提是大数据,说到大数据首先要会玩数据,后端有很多跟数据打交道比较频繁的业务场景。而且在很多公司的时候,懂后端业务的技术跟容易获得机会。以上是我想要学习java的原因。
java内部类的使用

有这样一个业务场景,当我们定义了一个接口,然后又有一个基类。此时接口和基类里面有一个方法是重名的,此时如果子类需要调用接口和子类方法的时候没有办法直接实现。解决方案是通过内部类变相的实现接口的方法。
声明接口和基类

    interface Teachable{    void work();}
    public class Programmer {   
    private String name;   
         public Programmer(){
    };   
    public Programmer(String name){     
         this.name = name;   
     }   
     public void setName(String name) {
           this.name = name;  
      }   
    public String getName() {      
         return name;   
     }   
    //
      public void work(){        
    System.out.println(name+"来自"+getClass());   
     }
    }

创建子类和子类内部类

    public class TeachableProgrammer extends Programmer {  
      public TeachableProgrammer(){
    }   
    public TeachableProgrammer(String name){   
         super(name);   
     }  
      private void teach(){
           System.out.println(getName() + "来自接口");   
     }      
    //内部类
    private class Clourse implements Teachable {   
     //来自接口的
         public void work(){            
                  teach();      
     }  
      }   
    public Teachable getCallbackReference(){      
       return new Clourse();   
    }
    }

调用和Debug

    public class TestTeachableProgrammer {
       public static void main (String [] args) {      
      TeachableProgrammer tp = new TeachableProgrammer("你");      
           tp.work();      //来自父类
          tp.getCallbackReference().work();   //来自接口实现
     }
    }

其实,我想最简单的解决办法就是方法名不要重名就好了。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0