父类、抽象类、接口、匿名内部类

引言

父类、抽象类、接口常常搞混,到最后分不清楚他们出现的原因,以及使用的场景,下面来解密。

1.父类

当我们多个类中存在共同的方法的时候,把共同方法抽象出来放到父类中,然后再把这种特征从父类中继承下来。这样符合我们面向对象的本质,根据现实世界的本质来设计的语言。

宠物类class Pet{ public void eat(){} }
狗类class Dog extends Pet{ public void eat(){} }
猫类class Cat extends Pet{ public void eat(){} }

存在问题

我们发现在实例化对象的时候父类被实例后是没有实际意义的,也不会存在父类这种动物的,故提出了抽象类

2.抽象类

抽象abstract类规定:

  • 抽象方法必须被重写,没有方法体,不能被private修饰
  • 有抽象方法的必须是抽象类
  • 抽象类可以没有抽象方法
  • 抽象类不可以被实例化,不存在构造方法

这样可以看出来,抽象类也就是特殊的父类,也可以有普通方法和父类一样,只不过不支持被实例化。

存在问题

抽象类只能被继承一次,而有时候我们需要继承多个类的特性。故提出了接口。

3.接口

接口规定:

  • 接口能继承多个接口
  • 接口中的变量都是静态常量 static final
  • 接口中的方法都是public abstract
  • 实现类必须实现所有的抽象方法(default修饰的方法除外)

4.匿名内部类

interface Person {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {//接口的实现,实现了接口的方法
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值