JAVA基础知识之抽象

一、抽象类定义

        使用关键字abstract修饰的类称为抽象类  

public abstract class Student
{

    
}

二、抽象方法定义:

       1. 使用关键字abstract修饰的方法称为抽象方法,

       2.抽象方法只有方法签名,没有方法体,方法体就是指{}

/**
     * 抽象方法
     */
    public abstract void test2(String name);

三、抽象类属性

        属性和正常类定义一样,没有抽象属性一说

四、抽象类的特点

        1、含有抽象方法的类一定是抽象类,抽象类不一定含有抽象方法(但是如果没有抽象方法,那么设置抽象类将毫无意义)

        2、抽象类不能实例化,即不能用new实例化对象

        3、若某类继承抽象类,那么必须重写抽象类的所有抽象方法,否则就要定义为抽象类

        4、继承抽象类的构造方法和继承普通类的构造方法一致

五、为什么要用抽象类

        

        1.设置抽象方法

        2.保证抽象方法一定被子类重写进而实现不同功能

举例说明:

    1.人是一个类,拥有一个eat方法,亚洲人,非洲人,欧洲人是其子类,那么就都有eat方法

    2.亚洲人用筷子吃饭、欧洲人用叉子吃饭、非洲人用手吃饭,实现内容是不一样的

People类

/**
 * 类--人
 * 
 * @author Administrator
 * 
 */
public class People
{

    /**
     * 吃饭的方法
     */
    public void eat()
    {
        System.out.println("这是一个吃饭的方法");
    }
}
亚洲人类:

 

/**
 * 亚洲人类
 * @author Administrator
 *
 */
public class AsiaPeople extends People
{
    
    @Override
    public void eat()
    {
       System.out.println("亚洲人用筷子吃饭");
    }
    

}

欧洲人类:

/**
 * 欧洲人类
 * @author Administrator
 *
 */
public class EuropePeople extends People
{

    @Override
    public void eat()
    {
      System.out.println("欧洲人用叉子吃饭");
    }
    
}

非洲人类:

/**
 * 非洲人类
 * @author Administrator
 *
 */
public class AfricaPeople extends People
{

}

            3.这个时候定义AfricaPeople类的时候,假设我忘记了重写eat这个方法,那么会导致AfricaPeople的eat方法没有实现我们要求的功能,调用eat方法时会调用父类People的方法

            4.为了避免出现这类失误,我们给People类的eat方法加上abstract修饰,使的People类称为抽象类

            5.那么AfricaPeople类就必须要重写eat方法,保证了功能的扩展

修改后的People类:

/**
 * 类--人
 * 
 * @author Administrator
 * 
 */
public abstract class People
{

    /**
     * 吃饭的方法
     */
    public abstract void eat();
   
}

修改后的AfricaPeople类:

/**
 * 非洲人类
 * @author Administrator
 *
 */
public class AfricaPeople extends People
{

    @Override
    public void eat()
    {
        System.out.println("非洲人用手吃饭");
        
    }

}

猜你喜欢

转载自blog.csdn.net/ai_bao_zi/article/details/80973766