抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。
抽象方法和抽象类
在类中没有方法体的方法,就是抽象方法。
含有抽象方法的类,即为抽象类。
如果一个子类没有实现抽象基类中所有的抽象方法,则子类也成为一个抽象类。
我们可以将一个没有任何抽象方法的类声明为abstract,避免由这个类产生任何的对象。
构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法
package ;
//抽象类
//抽象类的必要性:当弗雷德一些方法不能确定时,可以用abstract抽象方法
//一个动物的抽象类
//抽象类不能实现
//抽象类可以没有抽象方法
abstract class Animal{
int age;
String name;
//抽象方法不能实现如:abstract public void eat(){}
abstract public void eat();
abstract public void speak();
}
//当一个类继承的父类是抽象类时,需要把抽象方法全都实现
class Dog extends Animal{
public void eat(){
System.out.println("我是狗我吃骨头");
}
public void speak(){
System.out.println("我是狗我汪汪叫");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("我是猫我吃鱼");
}
public void speak(){
System.out.println("我是猫我喵喵叫");
}
}
public class Abstract_class1 {
public static void main(String[] args) {
Dog d=new Dog();
Cat c=new Cat();
d.eat();
d.speak();
c.eat();
c.speak();
}
}