面向对象的接口问题:
package biji;
/*接口就是多个类的规范
- 接口是一种引用数据类型最重要是其中的,抽象方法
- 定义: public interface 接口名{}
- 注:换成关键字interface之后编译生成的字节码文件仍然是.ava
- java7: 接口内容:1.常量2.抽象方法
- java8:内容扩充:3.默认方法4.静态方法。
- java9: 内容扩充:5.私有方法
- */
/*
*在任何java版本种,接口都能定义抽象方法
*格式:
-
public absract 返回值类型 方法名称(参数列表);
-
注意事项:
-
1.接口中的抽象方法关键字必须是public abstract
-
2.即使不写系统默认加上
-
3.方法的三要素可随意定义。
-
*/
public interface myinterfaceabstract {public abstract void methodA();
}
/*1.接口不能直接使用,必须有一个“实现类”来实现改接口
- 格式:public class 实现类名 inplements 接口名{}
-
- 接口的实现类必须覆盖重写接口中的抽象方法 : 去掉abstract 创建方法体
- 3.创建实现类对象,使用方法
- alt +回车 直接覆盖接口中所有的的抽象方法
- 注:如果实现类没有重写接口中的抽象类,那么还可以将实现类定义为抽象类也可以。
- */
- */
如果实现类不重写接口中默认方法直接调用则默认去找接口中的方法。
public interface myinterfaceabstract {
public abstract void methodA();
//新添加的方法,为默认方法
public default void methodDefault()
{
System.out.println("这是新添加的默认方法");
}
}
public class 实现类 implements myinterfaceabstract{
public void methodA() {System.out.println(“实现AAA”);};
public static void main(String[] args) {
实现类 A=new 实现类();
A.methodA();
A.methodDefault();
}
}
public class 实现类 implements myinterfaceabstract{
public void methodA() {System.out.println(“实现AAA”);};
public static void main(String[] args) {
实现类 A=new 实现类();
A.methodA();
A.methodDefault();
}
}
接口静态方法:把abstract 或者default 换成static
不能通过实现类对象直接调用静态方法。可在实现类中直接用 接口名.静态方法();
在java9 中接口中可以定义私有方法,私有方法可以解决多个实现类公共方法 实现类不能直接访问该公共部分
package biji;
public interface myinterface {
public default void methoddefaultA()
{
System.out.println(“默认方法”);
methodcommon();
}
public default void methoddefaultB()
{
System.out.println("默认方法");
methodcommon();
}
private void methodcommon(){
System.out.println("公共方法");
};
}
实现类可以通过调用methoddefultA B来实现公共方法。
接口中的成员变量::
/*
- 接口中可以定义成员变量 但是必须使用 public static final 三关键字修饰,(可省略)默认写了
- 格式 public static final 数据类型 常量名称=数据值;
- 注意:一旦final修饰则不可改变。
- 故:定义时一定要赋值,常量格式名字一般由全大写
- 使用:接口名称.常量名。
- */
接口的多继承::
Final关键字:
、