抽象类与接口
1. 抽象
- 一般将父类定义为抽象类
- 在抽象类中,不可以实例化该对象,就是不能new抽象类,只能靠子类去约束它
- abstract关键词定义的类为抽象类,使用这个关键字定义的方法为抽象方法
- 抽象方法没有方法体,该方法没有任何实际意义,除非被重写。
- 承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承没有任何意义。
- 抽象类被继承后,子类一定要重写父类的抽象方法,除非子类也是抽象类
public abstract class Parent{
抽象方法就是一个约束~有人帮我们实现
abstract void testAbstract()
}
- 只有类中有抽象方法,这个类必须得是抽象类
- 抽象类里面可以写非抽象方法。
- 抽象类被继承后需要实现其中所有的抽象方法,也就是子类要对抽象方法进行方法的重写。
- 抽象类的意义:将一些特殊的属性抽象出来,再后续的继承的子类中重写该方法.提高开发效率
- 抽象类是存在构造方法的,但不能通过实例化对象而获取,得靠子类用super来调用
2.接口
- 在java中一个类只能继承一个父类,但为了使方法更加简便,我们就得使方法继承多个父类,因此接口就出现
- 接口就是抽象类的延展,接口中的所有方法都没有方法体,都是靠后面子类进行方法的重写。目的是为了让不同的类实现。
- 接口内的方法不能有方法体。
- 接口就是相当于一个通道,你只能通过,但不能进行操作(也就是可以让方法过去,但不能对方法进行编写)
- 接口默认方法都是public ,abstract
- 再连接接口后,命名最后在后面加上Impl;
- 在接口里面定义的变量为常量,默认为:public static final
- 接口也不能被实例化,因为接口中没有构造方法
- 在后续中必须要重写接口中的方法
接口使用interfance
public interfance Paintable{
void draw(String name);
}
public class ChildImpl extends Parent implements GrandParent{
...
}
- java中不允许出现多重继承,但可以使用接口可以实现多重继承。一个类可以同时实现多个接口,因此可以将所有需要继承的接口放置再implements关键字并用逗号隔开
public class 类名 implements 接口1,接口2,接口n{
}
- 接口也是可以进行继承的,一个接口可以继承另一个接口
interface intf1{}
interface intf2 extends intf1{}