JavaSE - 抽象类

抽象类的定义与使用

1.抽象类:在普通方法的基础上,扩充了一些抽象方法(也有java单继承局限)。

抽象方法:只声明而未实现的方法,即没有方法体。

所有抽象方法要求使用abstract来定义,并且抽象方法所在类也一定要使用abstract来定义,表示抽象类。

在java中,只有方法声明而没有方法体的,不一定是抽象方法,也可能是本地方法,如:public native void fun( );


2.抽象类的使用原则

(1)所有的抽象类必须有子类(abstract不能与final一起使用,也不能与private一起使用)。

(2)抽象类的子类必须覆写抽象类的所有抽象方法(该子类若也是抽象类,则不用覆写所有的抽象方法)。

(3)抽象类要想创建实例化对象,必须通过子类的向上转型为其实例化对象(抽象类无法直接创建实例化对象)。

3.抽象类的相关规定

(1)抽象类也允许提供构造方法,并且子类也照样遵循对象实例化流程,先调用父类构造方法,而后调用子类构造方法。

(2)抽象类中允许不定义任何的抽象方法,但此时抽象类依然无法直接创建实例化对象。

(3)abstract与final不能一起使用,也不能与private一起使用。

因为final一定没有子类,abstract一定要有子类;private一定不能被覆写,abstract一定要被覆写。


4.内部抽象类

子类只需要覆写父类的直接抽象方法,父类内部抽象类的抽象方法不用管(可以在子类的内部类中实现)。

//抽象类
abstract class Person{
    private String name;
    private int age;
    public static String country;
    public Person(){
        System.out.println("Person..................");
    }
    public static void fun(){
        System.out.println("Hello");
    }
    //抽象方法
    public abstract void eat();
    public abstract void work();
    //内部抽象类
    public abstract class A{
        public abstract void test();
    }
}

abstract class Student extends Person{
    public void eat(){
        System.out.println("student is eating.");
    }
}

class Worker extends Person{
    public Worker(){
        System.out.println("Woeker...............");
    }
    public void eat(){
        System.out.println("worker is eating.");
    }
    public void work(){
        System.out.println("worker is working.");
    }
    //实现内部抽象类的抽象方法
    class B extends A{
        public void test(){
            System.out.println("内部抽象类");
        }
    }
}
public class Test4{
    public static void main(String[] args){
        //通过子类实例化抽象类父类对象
        Person per = new Worker();
        per.eat();
    }
}

输出结果为:
Person..................
Woeker...............
worker is eating.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值