重載,繼承與多態,類型斷定與轉換,抽象,覆蓋java
網上購物,我想要買牛奶,先要搜索庫存,查看是否有我要的商品。編程
選擇個人商品,輸入購買數量表示肯定購買數組
我看到機器顯示須要付的價格和剩餘庫存結束購物markdown
商品類包含名字,價格,庫存三個屬性eclipse
用戶類暫時沒寫,暫定帳戶,密碼屬性函數
用戶類學習
private String name;
測試
private String password;
ui
商品類
String name;
this
`double price;` `int num;`
方法
public String toString()
{`
`return "商品名爲:" + name + ",價格爲:" + price + ",庫存數量爲:" + num;` `}`
public void buyGoods(){
`Scanner sc=new Scanner(System.in );`
}
class Manager extends Employee
說明Manger是Employee的子類
public double getSalary()
Employee(String n, double s, int year, int month, int day)
getName()
getHireDay()
getName()
getSalary()
是共有方法
private double bonus
爲子類特有的屬性
getSalary()
Manager(String n, double s, int year, int month, int day)
public void setBonus(double b)
爲子類特有方法
這裏用到了動態綁定
,即在執行期間(非編譯期)判斷所引用對象的實際類型,根據其實際的類型調用其相應的方法
此題staff[0]屬於manager類
,調用manager中方法,staff[1]和staff[2]是employee類
,調用employee中的方法。
減小了代碼量,只須要修改父類就能修改子類,感受上和c中的宏定義有類似的優勢。
class Fruit{
private String name; public Fruit(String name){ this.name = name; } public String toString() { return name+"-"+super.toString(); }
}
public class Mainf {
public static void main(String[] args) { Fruit fruit = new Fruit("mine"); System.out.println(fruit.toString()); }
}
使用自動生成equals方法
將else if (!name.equals(other.name))
改成else if (!name.equalsIgnoreCase(other.name))
便可忽略大小寫
提示:直接使用ArrayList的contains方法實現判斷對象是否存在。
import java.util.ArrayList;
public class Listadd {
public static void main(String[] args) { ArrayList<Fruit> fruitList = new ArrayList<Fruit>(); Fruit[] fruit = new Fruit[5]; fruit[0] = new Fruit("lili"); fruit[1] = new Fruit("LiLi"); fruit[2] = new Fruit("nini"); fruit[3] = new Fruit("NiNi"); fruit[4] = new Fruit("xixi"); for(int i=0;i<fruit.length;i++){ if(fruitList.contains(fruit[i])==false) fruitList.add(fruit[i]); } for(int i=0;i<fruitList.size();i++) System.out.println(fruitList.get(i)); } }
子類Circle和Rectangle繼承自Shape父類,abstract double getArea();
以及abstract double getPerimeter();
爲子類提供接口與實現
好處:
應用程序沒必要爲每個派生類編寫功能調用,只須要對抽象基類進行處理便可。大大提升程序的可複用性。
派生類的功能能夠被基類的方法或引用變量所調用,這叫向後兼容,能夠提升可擴充性和可維護性。
自動生成後修改tostring和equals便可
equals()方法的要求:
一、自反性:對於任何非空引用x,x.equals(x)應該返回true。 二、對稱性:對於任何引用x和y,若是x.equals(y)返回true,那麼y.equals(x)也應該返回true。 三、傳遞性:對於任何引用x、y和z,若是x.equals(y)返回true,y.equals(z)返回true,那麼x.equals(z)也應該返回true。 四、一致性:若是x和y引用的對象沒有發生變化,那麼反覆調用x.equals(y)應該返回一樣的結果。 五、非空性:對於任意非空引用x,x.equals(null)應該返回false。
6-1
pta內部錯誤,不懂額
6-2
創建object[]數組解決
6-3
eclipse自動生成後要注意company爲null時不能用equals()方法比較
題目集:[jmu-Java-03-面向對象1-基礎-封裝繼承]
3.3 統計本週完成的代碼量 |周次|行數|新增行數|文件數|新增文件數| |-:|-:|-:|-:|-:| |1|73|73|2|2| |2|281|281|9|9| |3|908|908|16|16| |4|1122|214|21|5|