在面向对象中,所有的对象可以通过类来创建。反过来说,并不是所有的类都可以创建对象的。如果一个类中没有足够完整的信息来描述具体的对象的话,那么这个类叫抽象类。
在Java中使用关键字abstract修饰类,这个类叫抽象类。
2.1abstract关键字
abstract修饰的类叫抽象类
abstract修饰的方法叫抽象方法
总结:abstract 只能修饰类和方法
语法格式:
abstarct class 类名{ 普通的方法; public void eat () { } 抽象方法; public abstarct void sleep (); }
入门案例:
先声明一个抽象类
package com.qfedu.c_abstract;
//声明一个抽象类
abstract class Person {
//在抽象类中可以写普通成员方法
public void eat () {
System.out.println("今天中午吃外卖。。。。。。");
}
//定义一个抽象方法 是不完整的方法 没有方法体的
abstract public void work();
}
// 抽象类创建不了对象的
//解决方案: 再写一个普通类去继承抽象类即可
class Man extends Person {
//the type Man must implement the inherited
//abstract method Person.work()
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("劳动力");
}
}
public class Demo1 {
public static void main(String[] args) {
Man man = new Man();
man.eat();
man.work();
}
}
归纳出以下9个注意事项 一定要记住 并深刻体会
注意事项:
1.如果一个类中用abstract修饰的话,那么这个类叫抽象类
2.抽象类中可以有普通成员方法和抽象方法
3.抽象方法没有方法体,是不完整的方法
4.抽象类不能被实例化
5.一个普通的类可以去继承抽象类
6.在子类中一定去实现(重写)抽象类中所有的抽象方法
7.非抽象方法可以重写也可以不重写
8.一个抽象类可以继承另外一个抽象类
9.抽象类可以继承非抽象类
abstract class Anmial{ public abstract void play(); public abstract void eat() ; public void sleep() { System.out.println("睡觉"); } } class Panda extends Anmial{ @Override public void play() { System.out.println("游泳"); } @Override public void eat() { System.out.println("吃竹子"); } } class Cat extends Anmial{ @Override public void play() { System.out.println("玩滚球"); } @Override public void eat() { System.out.println("猫吃鱼"); } } public class Demo1 { public static void main(String[] args) { Panda panda = new Panda(); panda.eat(); panda.play(); panda.sleep(); Cat cat = new Cat(); cat.eat(); cat.play(); cat.sleep(); } }



