Java 中的抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

在Java语言中使用abstract class来定义抽象类。

//抽象类:普通类有的一切,抽象类都有,抽象类比普通类多了抽象方法,且不能被实例化

public abstract class Test{

    // 构造器

    public Test () {

        System.out.println("Test的無參构造器");

    }

    // 定义一个普通方法

    public void sleep() {

        System.out.println("普通方法");

    }

// 抽象方法只包含一个方法名,没有方法体,必须使用abstract修饰符来修饰

    public abstract void running();

    public abstract String say(String str);

}

如果一个类包含抽象方法,那么该类必须是抽象类。

任何子类必须重写父类的抽象方法,或者声明自身为抽象类。继承抽象方法的子类必须重载该方法,否则该子类也必须声明为抽象类。

最终,必须有子类实现该抽象方法,否则从最初的父类到最终的子类都不能用来实例化对象。

 

//继承了一个抽象类,必须实现父类中的所有抽象方法,如果父类也继承了一个抽象类,那么父类继承的那个抽象类的所有的抽象方法也得在这里实现

public class Demo extends Test {

    @Override

    public void running() {

        System.out.println("第一个抽象方法");      

    }

    @Override

    public String say(String str) {

        return "谁说:“"+str + "”";

    }

    public static void main(String[] args) {

        Demo demo = new Demo();

        demo.sleep();

        demo.running();

        System.out.println(demo.say("谁?"));  }

}

运行结果如下:

总结:

1. 抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。

2. 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。

3. 抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)五种成分。

4. 抽象类的构造器不能用于创建实例,主要是用于被其子类调用。

5. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

6. abstract 和static不能同时修饰一个方法。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值