接口的使用

1.接口是什么?

2.static,final的用法

3.接口的用法

-1.接口是什么?

接口:interface,以行为做分类,给出抽象方法

ex:Actionlistener就是一个接口,其中的方法是抽象的,要想具体化方法,需要再创建一个类,去重写方法,改()为{}

class与interface

class以共有的属性,行为分类

ex:动物类-都有名字(属性),都会吃东西(行为)

       植物类-都有名字(属性),都可能会被伤害(行为)

       植物有的可以吃东西,食人花等,但这不是植物类共有的行为,所以吃东西就不是植物类给它的行为

       若用interface分类,以吃东西为分类标准,就可以先抽象出吃东西的方法,在具体的把方法给到食人花

-2.static,final的用法

接口中所有的属性变量,都默认由static final修饰

static:静态的,唯一的

-修饰属性:属性属于类,可以由类名直接调用,属性只会在内存存在一份,值是可以变的

由类名直接调用static修饰的方法

Math类中的方法都由static修饰

public class Test {
    public static void main(String[]args){
    double n=Math.sin(3);
    System.out.println(n);
    }
}

属性只会在内存中存在一份,且值是可变的

 class Test2{
        static String name;
        public static void main(String[]args){
            Test2.name="zhang";
            //当只写 Test2.name="zhang";这行代码时输出zhang
            Test2.name="chen";
            //当写了此行代码时,只输出chen
 
        System.out.println(Test2.name);
 
    }
    }

-修饰方法:类名可以直接调用,不能直接使用本类的成员属性变量

class Test3{
        int num;
        static String name;
        static void study(){
            System.out.println("学习过");
        }
        public static void main(String[]args){
            Test3.study();
            Test3.name="zhang";
            Test3.num=9;
            System.out.println(Test3.name);
            System.out.println(Test3.num);

在上边的代码中num是会报错的

也就是说,类名不可以调用不是static修饰的属性或方法

需要创建类的对象,然后由对象调用

fianl:最终的,不变的

-修饰属性:定义常量,必须初始化赋值,之后值不变

-修饰方法:不能被子类重写

-修饰类:不能有子类,不能被继承

-3.接口的用法

-1.格式:interface.  接口名{ }

-2.接口中的方法:抽象方法,没有方法体

也可以定义静态的,默认的方法,有方法体

实例演示

1.门与锁

public interface Lock {
    //接口中的成员方法只能是抽象方法    所有的方法都默认是public abstract
    void open();
    void close();}


public class Door {
    Lock lock;
    //接口不可以创建对象,但是可以声明变量
    public void open(){
        lock.open();
    }
    public void close(){
        lock.close();
    }
public class Facelock implements Lock{
    public void open() {
        System.out.println("人脸识别成功,开门");
    }
 
    public void close() {
        System.out.println("人脸识别成功,关门");
 
    }
}
public class IDlock implements Lock{
 
    public void open() {
        System.out.println("IC卡识别正确,开门");
    }
 
    public void close() {
        System.out.println("IC卡识别正确,关门");
 
    }
}
public static void main(String[]args){
        Door door1=new Door();
        //先给Lock一个初始化对象
        //创建了lock接口的子类对象
        IDlock idlock=new IDlock();
        //装配锁
        door1.lock=idlock;
        door1.open();
        door1.close();
        //换一把锁
        Facelock facelock=new Facelock();
        door1.lock=facelock;
        door1.open();
        door1.close();
2.深圳去北京路线

public interface SZtoBJ {
    void SZgotoBJ();
}
public class Traveler {
    //由接口作为一个参数类型定义一个参数
    public void gotoBJ(SZtoBJ sztobj){
        sztobj.SZgotoBJ();
    }
public class SZtoBJ1 implements SZtoBJ{
    public void SZgotoBJ() {
        System.out.println("深圳出发");
        System.out.println("经停洛阳");
        System.out.println("到达北京");
    }}
    class SZtoBJ2 implements SZtoBJ{
        public void SZgotoBJ() {
            System.out.println("深圳出发");
            System.out.println("经停江苏");
            System.out.println("到达北京");
 
        }
    }
    class SZtoBJ3 implements SZtoBJ{
        public void SZgotoBJ() {
            System.out.println("深圳出发");
            System.out.println("经停武汉");
            System.out.println("到达北京");
 
        }
    }

 public static void main(String[]args){
        Traveler traveler1=new Traveler();
        SZtoBJ1 bj1=new SZtoBJ1();
        SZtoBJ2 bj2=new SZtoBJ2();
        SZtoBJ3 bj3=new SZtoBJ3();
        traveler1.gotoBJ(bj1);
        traveler1.gotoBJ(bj2);
        traveler1.gotoBJ(bj3);
 
 
    }

你可能感兴趣的:(java,开发语言)