今天学习了Java的抽象类,在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类;抽象来除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
接下来我们可以通过一些练习题来深入的了解抽象类
1、为“无名的粉”写一个类class WuMingFen
//一般情况下,不允许定义类在default包中,因为default包中的类其它包无法访问
//包名称的命名规则:全小写,采用域名反转
package com.yan;
//类名称,一般名词,采用大写字母开头,大写字母分词
public class WuMingFen {
private String theMa;
private int quantity;//采用简单类型定义属性,最大的问题是很难判定是默认值还是赋的值
private boolean likeSoup=true;//按照一般的业务规则,可以一般有汤
//一般在具体开发中,建议采用私有属性,公有的get/set方法的形式定义属性
public String getTheMa() {
return theMa;
}
//业务规则:面码一旦告知则不能修改,所以可以不提供这个set方法,则面码属性就是只读属性
public void setTheMa(String theMa) {
this.theMa = theMa;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
//通过get/set方法可以进行一些参数的合法性验证
if(quantity<1) quantity=1;
//也可以通过抛出异常终程序运行 throw new RuntimeException()
this.quantity = quantity;
}
public boolean isLikeSoup() {
//如果针对boolean类型的属性,默认get方法的命名规则是isXxxx不 是getXxx;但是如果将属性修改为Boolean,则还是getxxx
return likeSoup;
}
public void setLikeSoup(boolean likeSoup) {
this.likeSoup = likeSoup;
}
}
2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen(“牛肉”,3,true);