23、面向对象08 抽象类

抽象类

  • abstract修饰符可以用来修饰方法也可以用来修饰类,如果修饰方法,那么该方法就是抽象方法,如果修饰类,那么该类就是抽象类。

  • 子类如果要继承抽象类,子类就必须重写父类的方法(抽象类的方法必须由子类来实现),或者将子类也定义为抽象类

  • 抽象类不能被直接实例化(不能直接用new关键字来实例化),但可以用子类来创建对象

抽象方法

  • 方法用关键字abstract修饰,抽象方法只有方法的定义,没有具体的方法实现
package OOP.chouxianglei;
//抽象类
public abstract class Aciton {

    //抽象方法
    public abstract void doSomething(); 
}

子类重写父类(抽象类)方法

package OOP.chouxianglei;
​
//抽象方法要由子类来实现(子类去重写父类中的抽象方法)
public class A extends Aciton{
    @Override   //快捷键Alt+insert
    public void doSomething() {
​
    }
}

或者直接将子类定义为抽象类

package OOP.chouxianglei;
​
//将子类也定义为抽象类
public abstract class A extends Aciton{
    
}

  • 抽象类中可以没有抽象方法,但是有抽象方法的类中一定要将类声明为抽象类(即抽象方法必须在抽象类中,可以理解为抽象的抽象:约束)

package OOP.chouxianglei;
​
//抽象类
public abstract class Aciton {
    //约束~有人帮我们实现
    //定义了抽象方法,就必须把类定义为抽象类
    public abstract void doSomething(); //abstract,抽象方法,只有方法声明,没有方法的实现
        
    //抽象类中也可以些一些普通的方法   
    public void sayHello(){
        System.out.println("Hello");
    }   
}

类中有抽象方法,就必须把类定义为抽象类,否则程序将报错

注意事项:

  • 抽象类,不能用new关键字来创建对象,它是用来让子类继承的(即只能靠子类去实现它:约束)

  • 抽象方法,只有方法的声明,没有方法的实现,它是让子类去实现的

  • 子类继承抽象类,那么就必须实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类

思考:

1.抽象类是否存在构造方法?

Java的抽象类可以存在构造方法。在Java中,抽象类虽然无法实例化,但仍然可以创建对象。由于抽象类本身无法被实例化,所以其构造方法的主要作用是为其子类提供初始化操作,并且可以在构造方法中对属性进行初始化。抽象类的构造方法不能被直接调用,需要通过子类来调用。另外,抽象类的构造方法也可以被子类重写和继承。需要注意的是抽象类的构造方法不能被声明为private类型,因为私有构造方法无法被子类调用。

2.抽象类存在的意义是什么?

(1). 抽象类可以作为其他类的基类:抽象类是用来被其他类继承的,它可以定义抽象的方法和属性,后续的子类可以根据自己的需求进行实现或覆盖。

(2). 抽象类体现了继承的思想: Java中的继承是面向对象编程中最基本、最重要、最有特色的一种方式。而抽象类就是继承思想在Java语言中的一种具体实现方式。

(3). 抽象类封装了共同的属性和方法:Java是面向对象编程语言,封装是面向对象的三个重要特征之一。抽象类也是一种封装性的体现,它可以封装一些共有的属性和方法,并且供其他类进行调用和使用。

(4). 抽象类保证程序的可扩展性和可维护性:在程序的开发过程中,我们经常会遇到需求变化、接口修改等问题。而抽象类可以保证程序的可扩展性和可维护性,使得程序易于修改和扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值