抽象类和接口

  子类继承父类后,会继承父类中非private修饰的属性和方法等等,并且可以通过重写父类中的方法来实现多态,我们在调用这些多态的方法时,会优先调用对应的子类的重写方法,这样父类中的这个方法是怎么实现的、有什么功能就已经不重要了。重写方法就是,在子类中写一个与父类中的某个方法的方法名、参数类型、参数个数、都相同的方法,但是方法的具体实现一般是不同的,重写的方法的返回值类型在一般情况下与父类的方法也是一样的,但也有特殊情况,列如协变类型。用abstract修饰的普通类就会成为抽象类,抽象类中需要写一个抽象方法,子类继承抽象类时必须要重写抽象类中的抽象方法。抽象类不能用来实例化对象,是专门用来继承的类。虽然普通类也能继承,并且子类也能重写方法实现多态,但是抽象类被继承后,如果子类没有重写父类的抽象方法,编译器是会报错的,相当于多了一层编译器的检查把关,可以帮助我们判断需要重写的方法有没有重写。

  当使用父类引用,引用子类对象时,用这个引用去调用有重写的方法,就会调用到子类重写的方法。例如有两个类A和B,B类继承了A类,并且A类中有一个方法func(),B类中重写了这个方法,func(),这时A a = new B;通过父类引用,引用子类对象,再通过a 调用func方法,即a.func(),调用到的就是B类中的func()。

  在Java当中,一个类可以被多个类同时继承,但每一个类只能继承一个类。即一个父类可以有很多子类,但每个子类都只有一个父类。这时,一个子类就不能去继承使用多个类中的方法和属性,于是就有了接口。

  接口是一种特殊的抽象类,是使用interfa修饰的,不能通过new来实例化对象。接口内的普通方法都不能有具体实现,如果非要实现,就需要用关键字defaul修饰,此时,这个方法就成了该接口的默认方法,不能被重写,只可以在接口类内调用这个方法,而且可以有多个。接口内的static方法是可以有具体实现的,也可以有多个,同样不能被重写,只能在类内调用。

  类通过关键字implement实现一个接口,实现一个接口之后必须在类内重写该接口的抽象方法。由于每一个类只能继承一个类,但是一个类可以实现多个接口,这样当我们需要利用到多个不同的方法的多态时,就可以通过给这个类实现多个接口来完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值