package object;
/*特殊类(标准、没实现)、多继承、抽象类、工具类
* 接口(与类并列)
*1、定义:可以理解为一种特殊类,在这个类里面制定了一系列标准(没实现只声明)
* 同时接口是解决了JAVA无法多继承的一种手段
* 在java8之前可以理解:为抽象类的特殊形式,接口里面只有抽象方法与常量声明
* 在java8之后可以理解:为工具类,增设了静态与默认方法的功能 (具有实现功能有方法体)
*
*2、为什么要用接口
*2.1实现多继承
*2.2解耦
*2.3原因是抽象类内部可能包含非final的变量,但是在接口中存在的变量一定是final,public,static的。
*
*3、接口的实现
*
*前言:接口类似与一个USB口,我在里面制定了一系列标准,只要你能实现所有标准
*那么你就具有使用USB的功能
*像类一样接口也有方法与属性,但在接口中方法默认是抽象的。属性是全局常量
*
*
*使用: 方法:默认为public abstact
* 属性:默认为public static final
*
*实现:关键字:implements(实现)
* 使用类实现(重写)类似继承
*4、接口的注意点
*
*4.1:对象实例化问题,接口的方法一般是抽象的,代表接口也是抽象的
*所以我们无法直接实例化对象,这时就需要java中的多态:向上转型
*
*4.2一个类可以继承多个接口(弥补类无法实现多继承的局限。)
* 一个接口可以继承另一个接口,重写也要包含那个接口的方法
*
*
*4.3,Java 8允许在接口中定义两类新方法:静态方法和默认方法,它们有实现体
*静态方法:public static void xxx{方法体};
*默认方法:default void xxx{方法体};
*
*
*4.4接口中不能定义构造器,意味着不能实例化
*
*
*4.5java8、9新增静态方法static、默认方法default
*静态方法通过接口调
*默认方法创建对象调
*
*
*
*4.6
*接口中不能含有代码块
*/
//3、接口的实现
interface Interface01{
// 方法默认修饰符(抽象方法)
public abstract void TestInterface();
int TestInterface02();
// 变量默认修饰符(全局常量)
public static final int TestInterface03=666;
int TestInterface=999;
}
class ClassA implements Interface01
{
// 需要重写接口所有方法(实现标准)才承认你有接口的功能
@Override
public void TestInterface() {
System.out.println("我是接口重写方法01");
}
@Override
public int TestInterface02() {
System.out.println("我是接口重写方法02");
return 0;
}
}
// 4、接口的注意点
public class Interface {
public static void main(String args[])
{//向上转型,并且调用的是重写的方法
Interface01 P=new ClassA ();
//常量不能修改
// P.TestInterface03=8;
System.out.println(P.TestInterface);
//变量默认是静态的可以直接调用
System.out.println(Interface01.TestInterface);
P.TestInterface();
P.TestInterface02();
// 4.2一个类可以继承多个接口
// * 一个接口可以继承另一个接口,重写也要包含那个接口的方法
Interface02 S=new B ();
S.TestInterface();
S.TestInterface02();
S.TestInterface04();
//4.5
Interface08 G=new D();
G.TestAbstact();
G.TestDefault();
Interface08.TestStatic();
}
}
interface Interface02 extends Interface01
{
void TestInterface04();
}
class B implements Interface02
{
@Override
public void TestInterface() {
System.out.println("我是接口重写方法011");
}
@Override
public int TestInterface02() {
System.out.println("我是接口重写方法022");
return 0;
}
@Override
public void TestInterface04() {
System.out.println("我是接口重写方法033");
}
}
class C implements Interface01,Interface02
{
@Override
public void TestInterface04() {
// TODO Auto-generated method stub
}
@Override
public void TestInterface() {
// TODO Auto-generated method stub
}
@Override
public int TestInterface02() {
// TODO Auto-generated method stub
return 0;
}
}
// 4.5java8、9新增静态方法static、默认方法default
interface Interface08
{
public abstract void TestAbstact();
public static void TestStatic()
{
System.out.println("静态");
}
default void TestDefault()
{
System.out.println("默认");
}
}
class D implements Interface08
{
@Override
public void TestAbstact() {
System.out.println("抽象");
}
}
interface Interface09
{//4.6接口中不能含有静态代码块以及静态方法
// {
//
// }
}
java 接口
最新推荐文章于 2024-11-15 18:38:47 发布