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();   //来自接口实现
 }
}

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

你可能感兴趣的:(java小记和java内部类的使用)