【Java】抽象类

抽象类在面向对象编程中起到规范作用,它不能被实例化,通常包含抽象方法,这些方法需要由子类具体实现。抽象类强制要求子类重写其抽象方法,以此确保代码的正确性。在Java中,抽象类用`abstract`关键字标识,抽象方法同样需要被`abstract`修饰且无具体实现。抽象类可以有构造方法和非抽象方法,但不能实例化。
摘要由CSDN通过智能技术生成

目录

1. 什么是抽象类?

2.抽象类的语法

3.抽象类特性

3.1抽象类不能直接实例化对象

3.2抽象方法不能被private修饰

3.3抽象方法不能被final和static修饰

3.4抽象类必须被继承,子类需重写父类中抽象方法,否则子类也是抽象类,abstract

3.5抽象类中不一定有抽象方法,但有抽象方法的一定是抽象类

3.6抽象类中可以有构造方法,供子类创建对象的时候,初始化父类成员变量

4抽象类的作用


1. 什么是抽象类?

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

        比如:

        Animal是一个动物类,但Animal不是一个具体的动物,并不知道这个动物吃什么,所以Animal类中的eat方法无法具体实现。而Cat类,Dog类都是动物类,与Animal类是继承关系,两者都是具体动物,其内的eat方法可以实现 。因此Animal是一个抽象类。


2.抽象类的语法

        Java中,抽象类需要被abstract修饰,而类中抽象的方法也需要被抽象,抽象方法不能给出具体的实现体。

//抽象类,被abstract修饰的类
abstract class Animal{
    public int age;//属性
    public String name;
    abstract public void eat();//抽象方法
    public void a(){
        System.out.println("普通方法");
    }
//构造方法
   public Animal(int age, String name) {
        this.age = age;
        this.name = name;
    }
}
class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println(name + "吃鱼");
    }
}

抽象方法中也可以有普通方法和属性,甚至构造方法。


3.抽象类特性

3.1抽象类不能直接实例化对象

        Animal animal = new Animal();//编译出错

3.2抽象方法不能被private修饰

         

    abstract private void eat();//编译错误

3.3抽象方法不能被final和static修饰

     abstract public static void eat();//编译错误
     abstract final void eat2();

3.4抽象类必须被继承,子类需重写父类中抽象方法,否则子类也是抽象类,abstract

//抽象类,被abstract修饰
abstract class Animal{
    public int age;//属性
    public String name;
    abstract public void eat();//抽象方法
    public void a(){
        System.out.println("普通方法");
    }

    public Animal(int age, String name) {
        this.age = age;
        this.name = name;
    }
}
class Cat extends Animal{
    public Cat(int age, String name) {
        super(age, name);
    }

    @Override
    public void eat() {
        System.out.println(name + "吃鱼");
    }
}
abstract class Dog extends Animal{
    
    public Dog(int age, String name) {
        super(age, name);
    }
}

3.5抽象类中不一定有抽象方法,但有抽象方法的一定是抽象类

3.6抽象类中可以有构造方法,供子类创建对象的时候,初始化父类成员变量


4抽象类的作用

抽象类就是起到一个校验代码的作用。抽象类本身不能被实例化,使用的时候,必须创建抽象类的子类,然后让子类重写抽象类中的抽象方法。细一看,不就是重写就能实现的吗,为什么还要进行抽象,这不是多次一举吗?

没错,这通过重写就能实现,但是并不多此一举。

在我们实际工作中使用抽象类,父类并不会被实例化,实际工作也不能由父类完成,而当我们实例化父类的时候,编译器就会报错,这样就能让我们提前发现问题,及时改正,避免最后在大量修改。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值