重载,继承与多态,类型断定与转换,抽象,覆盖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|