首页 > 代码库 > 面向对象(抽象类)

面向对象(抽象类)

<style></style>

/**
* Created by rabbit on 2014-07-21. 博客园.liupengcheng
* 当多个类中 出现相同功能。但是功能主体不同。这时可以进行向上
* 抽取,这时,只抽取功能定义,而不抽取功能主体。
*
* 抽象 看不懂
*
* 抽象类的特点
* 1、抽象方法一定定义在抽象类中
* 2、抽象方法和抽象类都必须被abstract 修饰
* 3、抽象类不可以被new 创建对象,因为调用抽象方法没意义
* 4、抽象类中的方法要被使用,必须由子类复写其所有的抽象
* 方法后,建议子类对象调用。如果子类只覆盖了部分抽象方法
* 该子类还是一个抽象类。
*
* 抽象类和一般类没有太大的不同
* 该如何描述事物,就如何描述事物。只不过该事物中出现了一些
* 看不懂的东西,这些不确定的部分,也是该事物的功能,需要明确
* 出现,但是无法定义主题
*
* 抽象类中比一般类多了个抽象函数,就是在类中可以定义抽象方法
* 抽象类不可以被实例化
*
* 特殊:抽象类中可以不定义抽象方法,这样做,仅仅是不让该类建立
* 对象。
*/

* Created by rabbit on 2014-07-21. 博客园.liupengcheng
abstract class student
{
    public abstract void study();
    public abstract void sleep();

}
class Basestudent extends student
{
    public void study()
    {
        System.out.println("Base study");
    }
    public void sleep()
    {
        System.out.println("坐着睡");
    }
    public void eat()
    {
        System.out.println("坐着吃饭");
    }
}

class Advstudent extends student
{
    public void study()
    {
        System.out.println("Adv study");
    }
    public void sleep()
    {
        System.out.println("躺着睡");
    }
}

class Dostudent
{
    public void doSome(student stu)
    {
        stu.study();
        stu.sleep();
    }
}

* Created by rabbit on 2014-07-21. 博客园.liupengcheng
public class DuoTaiDemo
{
    public static void main(String [] args)
    {
        Dostudent ds = new Dostudent();
        ds.doSome(new Basestudent());
        ds.doSome(new Advstudent());
    }

}