為什么學(xué)習(xí)java
我是一名iOS開發(fā)者影锈,大學(xué)基本沒寫過代碼,后來是走上了培訓(xùn)這條不歸路蝉绷。一開始工作時候的不適應(yīng)和迷茫鸭廷,到現(xiàn)在挺享受現(xiàn)在的工作。學(xué)習(xí)java是因?yàn)閖ava語言在后端的統(tǒng)治力熔吗,以及我對后端業(yè)務(wù)的濃厚興趣辆床。我對人工智能有很好的期待,人工智能的發(fā)展的前提是大數(shù)據(jù)桅狠,說到大數(shù)據(jù)首先要會玩數(shù)據(jù)讼载,后端有很多跟數(shù)據(jù)打交道比較頻繁的業(yè)務(wù)場景。而且在很多公司的時候中跌,懂后端業(yè)務(wù)的技術(shù)跟容易獲得機(jī)會咨堤。以上是我想要學(xué)習(xí)java的原因。
java內(nèi)部類的使用
有這樣一個業(yè)務(wù)場景漩符,當(dāng)我們定義了一個接口一喘,然后又有一個基類。此時接口和基類里面有一個方法是重名的嗜暴,此時如果子類需要調(diào)用接口和子類方法的時候沒有辦法直接實(shí)現(xiàn)凸克。解決方案是通過內(nèi)部類變相的實(shí)現(xiàn)接口的方法铝侵。
聲明接口和基類
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());
}
}
創(chuàng)建子類和子類內(nèi)部類
public class TeachableProgrammer extends Programmer {
public TeachableProgrammer(){
}
public TeachableProgrammer(String name){
super(name);
}
private void teach(){
System.out.println(getName() + "來自接口");
}
//內(nèi)部類
private class Clourse implements Teachable {
//來自接口的
public void work(){
teach();
}
}
public Teachable getCallbackReference(){
return new Clourse();
}
}
調(diào)用和Debug
public class TestTeachableProgrammer {
public static void main (String [] args) {
TeachableProgrammer tp = new TeachableProgrammer("你");
tp.work(); //來自父類
tp.getCallbackReference().work(); //來自接口實(shí)現(xiàn)
}
}
其實(shí),我想最簡單的解決辦法就是方法名不要重名就好了触徐。