回顾 :面向对象
1.1面向对象
抽象,将现实中的事物抽取出事物的属性和方法,封装成对象,通过对象的实例化和调用,完成需求。
Student stu = new Student();
封装,隐藏类的内部细节,提供外部访问的接口。
将多次重复运行的代码,封装到方法中,较少代码代码的冗余,提高代码的重用性。
private int a = 10;
public int getA(){}
public void setA(int a){}
继承,子类继承父类中的共有属性和方法。关键字是extends。
充分体现了java对象重用的特性,继承属性,重写方法。提高了代码的重用性。
class a extends b
多态,一种类型,多种形态。父类对象在编译器是父类形态,运行期是子类形态。
提高了java系统的可插拔性。
Pet pet;// 父类类型。
pet = new Penguin(“qq”,2,85,50,“雌”);
pet = new Dog(“大黄”,3,75,85,“黄色”);
2.抽象类
什么是抽象类?
abstract 修饰的类叫做抽象类。
什么是抽象方法?
使用abstract修饰的方法叫做抽象方法,抽象方法不能有具体的实现,子类必须重写。
简单点说 1.任何类 只要用abstract修饰 都能作为抽象类
2.只要有抽象方法 这个类必然是抽象类 但是,抽象类不一定要有抽象方法
下面通过代码感受以下
/**
* 宠物父类:抽象类
* @author hadoop
*
*/
public abstract class Pet {
private String name;
private int age;
private int health;
private int love;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public Pet() {
super();
}
public Pet(String name, int age, int health, int love) {
super();
this.name = name;
this.age = age;
this.health = health;
this.love = love;
}
// 抽象类中有抽象方法。
public abstract void eat();
// 非抽象方法。
public void show(){
};
2.1 抽象类的特征
- abstract 修饰的类是抽象类:
- 1: 抽象类不能实例化。
- 2: 抽象类中有抽象方法,子类必须重写。
- 3: 抽象类中可以有非抽象方法,不要求子类强制实现。
- 4:如果一个类中,有抽象方法,那么这个类一定是抽象类。
- 5: 如果一个类是抽象类,这个类中一定有抽象方法吗?不一定。