(31)Java基础语法

时间: 2023-08-22 admin IT培训

(31)Java基础语法

(31)Java基础语法

目录

1、接口的概述

2、接口的定义格式

3、在接口中定义抽象方法

4、定义接口的 实现类

5、接口的使用

接口练习

6、接口的特点

7、一个实现类可以同时实现多个接口

8、接口的继承

9、设计提示


1、接口的概述

现实生活中的接口,比如USB接口为例:

       接口其实就是规定一些标准,要求各个生产厂商必须遵守这个标准。

好处:

       按照这个标准生产出来的设备都能在这个USB接口上使用,能让这些设备通用。

Java中的接口:

       是一个比抽象类还抽象的程序。

       它里面定义的方法一般都是抽象方法。

       在接口中定义的抽象方法其实就是接口定义的规范和标准。

       要求它的实现类都必须具有这些方法,如果它的实现类有这些方法了说明这些实现类是可以被使用的, 否则实现类是不能被使用的。

在JDK新版本中,也可以定义默认方法、私有方法、静态方法、变量

只能从一个类继承,但可以声明实现了多个接口,接口是多重继承的替代品。

2、接口的定义格式

权限修饰符 interface 接口名{

               定义抽象方法

        定义常量

        定义变量

        定义静态方法

        定义默认方法

        定义私有方法

}

public interface Animal {   // 接口public abstract void eat(); // 抽象方法(标准格式)abstract void sleep();  // 抽象方法public void method();   // 抽象方法public int id = 0; // 变量public static final double PI = 3.14;   // 常量public static void method01(){  // 静态方法}default void method02(){    // 默认方法}
}

 

3、在接口中定义抽象方法

格式:

        public abstract 返回值类型 方法名(形参列表);

简化格式:

       public abstract两个关键字可以都省略,也可以只写一个。

       如果这两个关键字没有写全,在编译阶段,编译器会自动补全。

       在大多数公司里面,都是只写public,不写abstract。

       在阿里和少数公司里面,这两个关键字都不写。

           void sleep(String where);

 

4、定义接口的 实现类

实现类就是一个普通的类,但是需要实现(重写)接口中所有的抽象方法。

在实现类中重写接口中的抽象方法,叫做实现接口中的抽象方法。

 

定义实现类 实现 接口:

        权限修饰符 class 类名 implements 接口名{

                实现接口中的抽象方法

                定义自己特有的属性和方法

        }

public interface Animal {   // 接口public abstract void eat(String food); // 抽象方法(标准格式)public abstract void sleep(String where);}
public class Cat implements Animal {    // 实现类public void eat(String food){System.out.println("猫吃"+food);}public void sleep(String where){System.out.println("猫睡"+where);}
}

 

5、接口的使用

定义实现类的对象,然后通过对象调用实现的方法。

1.先创建实现类的实例对象:

       实现类名 对象名 = new 实现类名(实参列表);

2.通过对象调用实现的方法:

       对象名.方法名(实参列表);

接口练习

1、假设一个学校接待方面的程序,招待不同身份的人的食宿问题,其对应规则如下:

 

身份

宿

学生

食堂

宿舍

教师

教师食堂

学校公寓

学生家长

招待所

招待所

理论上,当然可以对每个不同身份的人各定义一个对应的类,并实现各自的方法,但是观察这些类,可以归纳出其有一个共同的模板,即“人”的“食、宿”问题。这时候,就可以发挥接口的功能了。

public interface Person {public abstract void eat();public abstract void sleep();}
public class Student implements Person{@Overridepublic void eat() {System.out.println("在食堂吃饭");}@Overridepublic void sleep() {System.out.println("在宿舍睡觉");}
}
public class Teacher implements Person {@Overridepublic void eat() {System.out.println("在教师食堂吃饭");}@Overridepublic void sleep() {System.out.println("在学校公寓睡觉");}
}
public class Parent implements Person{@Overridepublic void eat() {System.out.println("在招待所吃饭");}@Overridepublic void sleep() {System.out.println("在招待所睡觉");}
}

2、需求说明:

         电视、风扇、冰箱等各种电器要想工作必须提供电源,使用接口模拟电器获得电源后进行工作。

         分析:

                         定义电源插座的接口(SocketInterface),具有供电的能力。getElectric()方法

                         定义类:电视类(TV)、风扇类(Fan)、冰箱类(Icebox),分别实现电源插座接口。

                         定义测试类,包含电器开始工作的方法,参数为电器对象(接口的引用指向实现类的对象,实现多态)

public interface SocketInterface {  // 电源插座接口public abstract void getElectric(); // 通电的方法
}
public class TV implements SocketInterface{@Overridepublic void getElectric() {System.out.println("电视通电后开始工作");work();}public void work(){System.out.println("电视播放节目");}
}
public class Icebox implements SocketInterface {@Overridepublic void getElectric() {System.out.println("冰箱通电后开始工作");work();}public void work(){System.out.println("冰箱工作");}
}
public class Fan implements SocketInterface {@Overridepublic void getElectric() {System.out.println("风扇通电后开始工作");work();}public void work(){System.out.println("风扇工作");}
}
public class SocketInterfaceDemo {public static void main(String[] args) {TV tv = new TV();work(tv);Icebox ib = new Icebox();work(ib);Fan fan = new Fan();work(fan);}public static void work(SocketInterface sif){sif.getElectric();}
}

 

6、接口的特点

1.接口没有构造方法,不能创建对象。

2.接口只能被它的实现类使用,一个接口可以有多个实现类。

3.接口中可以定义抽象方法,静态方法,默认方法,私有方法,不能定义实例方法。

4.接口可以继承接口,而且可以多继承:

       java中的类只能单继承,不能多继承。

5.一个实现类可以实现多个接口。

 

在什么时候使用接口,什么时候使用抽象类?

        当从类中抽取出来的除了有抽象方法外,还有属性或者普通的方法时,需要使用抽象类。

        当从类中抽取出来的只有抽象方法时,需要使用接口。

 

7、一个实现类可以同时实现多个接口

java中允许一个实现类同时实现多个接口的目的,是为了提高实现类的扩展性。

格式:

        权限修饰符 class 类名 implements 接口1, 接口2, ...{

                    实现所有接口中的抽象方法

                    定义自己特有的属性和方法

        }

 

8、接口的继承

接口可以继承接口,而且可以多继承.

目的是为提高接口的扩展性.

格式:

        权限修饰符 interface 接口名 extends 父接口名1,父接口名2,...{

                  定义抽象方法

                       ...

        }

 

面向接口的开发:

        高内聚,低耦合

 

9、设计提示

1.能用接口的地方,不用类。(面向接口编程

2.一个模块尽量少知道其它模块的信息,知道的越少,对今后的维护越有利。

上一篇:(30)Java基础 --抽象类

下一篇:(32)java基础语法 --多态polymorphic