面向对象7(抽象类)

抽象类:

概念:使用abstract修饰的类
时机:

  • 该类中存在抽象方法。
  • 该类的对象只是一种概念,在现实世界不存在该类的对象

语法:
访问修饰符 abstract 类名{

}

访问修饰符:暂时都用public修饰,代表谁都能访问该类。
abstract 关键字:
含义是抽象
修饰成员:类 和 方法。

注意点:

  1. 抽象类中不一定具有抽象方法,可以有其他成员。
  2. 抽象类无法实例化
  3. 抽象类的目的就是被子类继承。
  4. 抽象类具有构造方法
  5. abstract不能与private一起使用,因为abstract修饰方法被子类重写,private修饰的方法只能本类使用,出现矛盾。
  6. abstract不能与final一起使用,因为abstract修饰类能被子类继承,final修饰的类不被子类继承。abstract修饰方法能被子类重写,final修饰的方法不被子类重写。所以出现矛盾。
  7. abstract不能与static一起使用,因为static修饰方法可以通过类名直接调用,但抽象方法没有方法体。abstract修饰方法必须通过实例化子类来调用,与static调用方法不一致。所以矛盾。

abstract修饰类:

abstract class Pet{
    String name;
    public void eat(){

    }
}
class Dog extends Pet{

}
public class Demo {

    public static void main(String[] args) {
        Dog dog = new Dog();
    }
}

结论:

  • 抽象类中可以有非抽象方法。

abstract修饰方法

abstract class Pet{
    String name;
    public abstract void eat();
}
class Dog extends Pet{

    @Override
    public void eat() {
        System.out.println("吃骨头");
    }
}
public class Demo {

    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();//吃骨头
    }
}

结论:

  • 有抽象方法,该类必须是抽象类,其子类必须将该抽象方法进行重写。除非该子类也是抽象类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值