java基础:抽象类


抽象类

2024/8/26下午课
重点记忆:抽象类里面的构造器,无法完成创建对象的功能,但是可以完成初始化的功能。


抽象类

1. 为什么会有抽象类

继承的本质是代码的复用。
当子类继承了父类的方法,但是要求不一致,所以子类就会重写父类的方法。
但当需要修改的方法多了之后。
会发现其实没有必要去实现父类中的方法。
但是,不实现方法的话,子类就没有办法重写了,就不用重写了,自己写好自己的方法就行了。

但是继承可以方便使用多态。
为什么要有多态:父类的引用指向子类的对象。能够丰富代码的能力,使用多态,能够更好的表达java代码。

抽象类既解决了代码的冗余,又可以使用多态。

2. 什么是抽象方法

只定义方法,不实现。

3. 抽象类的特点

  1. abstract修饰的类叫做抽象类,abstract修饰的方法叫做抽象发放
  2. abstract修饰的抽象方法需要在子类里面并实现,前提是子类不是抽象类,如果子类是抽象类,可以不用实现(不报错)。
  3. 抽象类一定是父类
  4. 只有抽象类当中才能有抽象方法,普通类当中无抽象方法。
  5. 抽象类当中不一定非要写抽象方法,也可以写普通方法
  6. 抽象类不能被实例化(不能被创建对象),只能使用多态。【但是抽象类有构造器】
  7. final和abstract不能同时使用:final使用的类不能被继承,同时final修饰的方法不能被重写。
  8. abstract修饰的方法不能被static修饰:static修饰的方法叫类方法,属于类,而abstract修饰的方法属于对象。
  9. 抽象方法不能使用private修饰符进行修饰,因为private修饰的方法只能在本类中访问。而抽象方法要在子类中进行实现。
    10.抽象类有构造器,但是接口没有构造器。但是抽象类的构造器不能创建对象。 但是可以完成一些必要性的一些初始化操作,比如说赋值。

构造器作用:在构造对象的时候并对他初始化。
两个点:①创建对象②初始化

抽象类里面的构造器,无法完成创建对象的功能,但是可以完成初始化的功能。

4. 代码解释

package Animals;

public abstract class Animal {
    private String name;
    //抽象类里面有构造器,构造器无法创建对象,但是可以给变量初始化
    //——》子类的构造器里面调用super(参数)可以实现
    //但是无法直接用这个Animal类里面的构造器创建对象
    public Animal(String name){
        this.name=name;
    }
    public abstract void run();
    public void flay(){
        System.out.println("所有动物都能飞");
    }

    public String getName() {
        return name;
    }
}

package Animals;

public class Dog extends Animal{
    public Dog(String name){
        super(name);
    }
    public void run(){
        System.out.println("狗跑");
    }
}

package Animals;

import learn.A;

public class Test {
    public static void main(String[] args) {
        //    Animal a=new Animal("小狗");
//    报错,因为抽象类里面的构造器不能创建对象
        Animal a =new Dog("小狗");
        a.run();
        System.out.println(a.getName());
//      抽象类里面的构造器可以赋值
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值