JAVA基础(三)抽象类和抽象函数

抽象函数和抽象类都是用abstract开头,抽象类和抽象函数有以下的规则:

  1. 抽象类不能生成对象(意思就是只能当做父类)
  2. 如果一个类中有抽象函数,那么这个类必须是抽象类
  3. 一个类中即使没有抽象函数也可以被声明为抽象类

抽象类不能生成对象,那到底能不能实现构造函数呢?
其实是可以的,在继承的子类中,当我们生成子类的对象,它就会调用父类的构造函数。下面介绍一个小例子,新建一个抽象类Person:


abstract class Person {
    String name;
    int age;
    Person(){
        System.out.println("---Person构造函数");
    }

    Person(String name,int age){
        this.name=name;
        this.age=age;
        print();

    }

    void print(){
        System.out.println(name+"---"+age);
    }

     abstract void eat ();

}

然后写一个China类继承Person:


public class China extends Person {

    China(){
        super();
        System.out.println("---China无参构造函数");
    }

    China(String name,int age){
        super(name, age);
        System.out.println("---China有参构造函数");
    }

    @Override
    void eat() {
        System.out.println("===用筷子");

    }

}

最后就可以新建一个实现类,生成China对象实现Person类中得有参和无参构造函数。

最后,我们来讨论一下抽象类存在的意义。当我们在抽象类中实现了抽象方法,那么在继承类中你就必须复写抽象类中得抽象方法,要不然编译就无法通过,这样就能提醒开发者不要忘记应该做的事情。当然,抽象类的意义并不只是这个,不过在学习JAVA中我们应该记住一句话:
如果一段代码在语意上有错误,那么在语法上也是应该有错误的!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值