Java抽象类

抽象类

抽象类定义:一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

抽象类的定义:

public abstract class 类名 {}

抽象方法的定义:

public abstract void eat();

注意:抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类;抽象类不能实例化。

抽象类如何实例化呢?参照多态的方式,通过子类对象实例化,这叫抽象类多态。

继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类必须声明为抽象类。最终,必须有子类实现该父类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象从而失去意义。

修饰符必须为public或者protected,不能为private,因为创建了抽象类,就要被其他类继承,设为private就无法被继承

抽象类不能被实例化,只能通过普通子类来实现实例化

如果一个普通子类继承于抽象父类,则该类一定要重写实现该父类的抽象方法,如果子类仍然的hi一个抽象类,也是允许的,就不必冲写父类的抽象方法,但必须用abstract修饰

抽象级别:抽象类是对整体类的抽象,包括属性和方法

抽象类是现有子类,将子类的共同属性和方法提取出来放在抽象类中,是一种从下往上的构建法则

父类包含了子类集合的常见方法,但由于父类本身是抽象的,不能使用这些方法。

抽象方法特点:

抽象方法中没有方法体

抽象方法必须存在于抽象类中

子类重写父类时,必须重写父类的所有抽象方法

抽象方法不能使用private final static 来修饰,因为这些关键字都是和重写违背的​​​​​​​

抽象类例子:

先声明一个Cat类,类中有睡觉这一行为

public class Cat{
   public void sleep(){
     System.out.println("我在睡觉");
   }
}

 再声明一个Dog类,类中也有睡觉这一行为

public class Dog{
  public void sleep(){
    System.out.println("我在睡觉");
  }
}

这里的Dog和Cat都有共同的行为sleep();

但这时给Dog和Cat添加一个eat()的行为,不同的是,Dog吃的是骨头,Cat吃的是鱼,相同点是都是eat()这个行为,不同点是吃的食物不同,就可以将Dog和Cat作为子类,抽象出eat()这个行为作为抽象方法放在父类中,再在子类重写父类方法来调用实现吃不同的食物。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值