为什么学习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(); //来自接口实现
}
}
其实,我想最简单的解决办法就是方法名不要重名就好了。 |