java中的抽象类是一个像鬼一样的东西!
它究竟有什么用!
举例说明!例子如下:
public class Main { public static void main(String[] args) { Person p = new Student(); p.run(); } } abstract class Person { public abstract void run();//抽象类 } class Student extends Person { @Override public void run() { System.out.println("Student.run"); } }
简单的理解就是为了覆写父类中的方法,但该方法在父类中又没有任何意义,但又想装逼用覆写怎么办!所以就引入了抽象类,它借用关键字abstract,只有方法名没有具体的实现内容。大致就是这么个东西!
=================================================================================
哈哈!其实抽象类是有大作用的!
上面简单介绍了一下抽象类,但在实际中,抽象类方法本质上是定义接口规范的,也就是说在父类中规定方法的名称,让继承它的子类都有相同的接口实现,这样多态就能发挥其真正的威力。
但是对于单纯的抽象类(只有抽象的东西,其他的什么也没了),每次都要写关键字abstract,就太麻烦了,所以此处引入了接口!
接口 interface:
abstract class Person { public abstract void run(); public abstract String getName(); } //下面的代码就是用interface接口替换abstract抽象类的结果 interface Person { void run(); String getName(); }
那么究竟如何用继承的方法来继承接口呢?此处就引入了implements关键字:
class Student implements Person { private String name; public Student(String name) { this.name = name; } @Override public void run() { System.out.println(this.name + " run"); } @Override public String getName() { return this.name; } }
接口还有一个重要的作用!就是可以实现子类继承多个父类的情况!在Java中,一个类只能继承自另一个类,不能从多个类继承。但是,一个类可以实现多个interface,例如:
class Student implements Person, Hello { // 实现了两个interface 同时继承了Person,Hello
... }
关于接口的继承!一个接口也可以继承另一个接口,和普通的继承一样!例如:
interface Hello { void hello(); } interface Person extends Hello { void run(); String getName(); }
合理的接口使用,提高代码的复用,是牛牛的工程师必备的技能。。。。。。
原文:https://www.cnblogs.com/lipu12281/p/12172464.html