java接口和抽象类的简单理解
程序员文章站
2022-11-13 21:06:43
接口: (1)接口内定义的变量都是public static final类型的,无论是否显示限定这些修饰符,且必须要被显式初始化,否则报错: (2)接口内定义的方法都是抽象方法,即不包含任何方法实现: a.如果实现接口的类是普通类(非抽象类),则要实现该接口的所有方法,否则编译报错; b.如果实现接 ......
接口:
(1)接口内定义的变量都是public static final类型的,无论是否显示限定这些修饰符,且必须要被显式初始化,否则报错:
public interface interface1 { /** * variable1显式添加public static final修饰符 * variable2隐式含有public static final修饰符 */ public static final string variable1="aaa"; string variable2="bbb"; /** * variable3未显式初始化,代码变异报错: * the blank final field variable3 may not have been initialized */ string variable3; }
(2)接口内定义的方法都是抽象方法,即不包含任何方法实现:
a.如果实现接口的类是普通类(非抽象类),则要实现该接口的所有方法,否则编译报错;
b.如果实现接口的类是抽象类,则可以只实现该接口的部分方法,否则抛出异常;
public interface interface2 { /** * method1方法定义显式添加public abstract修饰符 * method2方法隐式含有public abstract修饰符,两个方法都是抽象方法 */ public abstract string method1(); string method2(); }
/** * 普通类class1实现interface2接口,必须实现所有接口方法 * */ public class class1 implements interface2 { @override public string method1() { // todo auto-generated method stub return null; } @override public string method2() { // todo auto-generated method stub return null; } }
/** * 抽象类class2实现interface2接口,可以只实现方法method1 */ public abstract class class2 implements interface2 { @override public string method1() { // todo auto-generated method stub return null; } }
抽象类:
(1)抽象类也是类,跟一般类一样可以有普通的变量、带实现的方法,可以有构造函数,但不能被实例化,只能用来继承;
普通方法必须带方法体,抽象方法不能带方法体;
public abstract class abstractclass1 { string variable1;//普通变量 public static final string variable2="aaa";//定义静态常量 public void method1(){ }//普通方法,必须有方法体 abstract void method2();//抽象方法,不能有方法体 abstractclass1(){//可以定义构造函数,但抽象类不能实例化,只能被继承 system.out.println("此为构造函数"); } }
接口和抽象类还有一个最大的不同,一个类可以实现多个接口,但只能继承一个类;
在实际应用中,接口是最为常用的,如果多个接口的实现有公共的部分,则可以考虑将这部分内容提取到抽象类中,然后继承该抽象类。也就是说,抽象类提供公共方法的实现,可以快速开发且统一管理,又允许你的类完全实现自己的所有方法,不会出现紧耦合的问题。
上一篇: HTML的概念和三大基石以及标准文档结构
下一篇: #16 os&sys模块