抽象类-----抽象类的产生和特点

为什么会有抽象类?

示例

定义一个Animal类作为父类,父类中有一个run方法

package work0826;

public class Animal {
    public void run(){
        System.out.println("都会跑");
    }
}
package work0826;

public class Pig extends Animal{
    public void run(){
        System.out.println("猪都会跑");
    }
}
package work0826;

public class Dog extends Animal{
    public void run(){
        System.out.println("狗都会跑");
    }
}
package work0826;

public class Cat extends Animal{
    public void run(){
        System.out.println("猫都会跑");
    }
}

我们定义了Dog Cat Pig子类,由于run方法并不适用于子类,所以每个子类都重写了父类当中的run方法

通过本实例,我们就会产生一个疑惑:

我们知道,继承的本质是代码的复用,子类继承父类的方法:

如果子类的方法都会各自实现与父类不同的功能,那么子类中的方法都需要重写,那么是不是不需要创建父类,不需要继承?

答案是否定的,因为多态是父类的引用指向子类的对象。继承能够使用多态,使用多态能够更好的表达java代码

既想要继承又不想重写方法,因此引出抽象类

抽象类

一般情况下,抽象类是父类

抽象类当中可以定义抽象方法,抽象方法必须在子类当中重写并实现

抽象方法只定义,不实现,从而满足了定义父类当中的方法,又可以使用多态的需求

package work0826;

public abstract class Animal {
    public abstract void run();//只定义,不能实现
}

抽象类的定义方式

abstract class Animal {  
    abstract void makeSound(); // 抽象方法  

    void eat() { // 具体方法  
        System.out.println("This animal eats food.");  
    }  
}  

class Dog extends Animal {  
    @Override  
    void makeSound() {  
        System.out.println("Bark");  
    }  
}  

抽象类是什么

抽象类的特点

抽象类的方法

1.abstract修饰的类叫做抽象类,abstract修饰的方法叫做抽象方法

2.abstract修饰的抽象方法必须在子类当中重写并实现,前提是子类不是抽象类

如果子类Dog类是抽象类

3.abstract修饰的抽象类一定是父类,因为需要子类对其实现抽象方法

4.只有抽象类当中有抽象方法,普通类当中不能有抽象方法

5.抽象类当中不一定非要写抽象方法,也可以写普通方法

抽象类的实例化

6.抽象类不能被实例化(创建对象),只能使用多态

抽象类&final修饰符

7.final和abstract不能同时使用

final修饰的类不能被继承,final修饰的方法不能被重写,abstract修饰的类必须要有子类继承,进行方法的重写。

抽象类&static修饰符

8.abstract修饰的方法(抽象方法)不能被static修饰

static修饰的方法属于类,而abstarct修饰的方法属于对象。

抽象类&private修饰符

9.抽象方法不能使用private访问修饰符,进行修饰

private修饰符修饰的变量和方法只能在本类当中使用,但是abstract修饰的方法必须在子类当中重写并实现

抽象类的构造器

10.抽象类是由构造器的,但是它的构造器不能创建对象,其构造器的目的是为了完成一些必要的初始化操作

总结

抽象类是面向对象编程中强大的工具,使用抽象类可以有效地组织代码、实现代码复用,并通过多态提高程序的灵活性和可维护性。通过掌握抽象类的特点与用法,开发者可以设计出更加清晰和高效的程序结构。

欢迎大家点赞,收藏,评论加关注呦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值