92_初识Java_接口_学习

92_初识Java_接口_学习

1、类是类,接口是接口,它们是同一层次的概念
2、接口使用interface 声明
3、JDK1.8之前,接口中只有两部分内容:
	 常量:固定修饰符 public static final
	 抽象方法:固定修饰符 public abstract
	 *修饰符可以省略不写,IDE会自动补全
4、类 实现implements 接口
	如果该类是抽象类,则可以不重写接口中的抽象方法
	如果该类不是抽象类,则必须重写所有接口中所有抽象方法
5、java中单继承,多实现
	一个类只能有一个直接父类,但是一个类可以实现多个接口
	写法:先继承后实现:
		 class Dog extends Animal implements TestInterface01,TestInterface02
6、接口是抽象的无法实例化,不可创建对象
7、接口中常量的访问
	接口名.常量名
	实现该接口的类名.常量名
	实现该接口的类的对象名.常量名
8、接口定义规则,实现类负责实现。
9、继承与实现区分:
	继承:子类对父类的继承,“is-a”,“是一个”
	实现:类对接口的实现,“has-a”,“具备”
	举例: 手机与照相机
		手机不继承自(不是一个)照相机
		手机具备(实现了)照相机的功能
10、多态的应用场景:
	父类作方法的形参,传入具体子类的对象
	父类作方法的返回值,返回的是具体的子类的对象
	接口作方法的形参,传入实现类的对象
	接口作方法的返回值,返回的是具体实现类的对象

1、IDEA新建接口

92_初识Java_接口_学习

2、练习代码如图

92_初识Java_接口_学习

package com.llg.learnInterface;
//1、接口中没有构造器
//2、使用interface 声明接口
//3、JDK1.8之前,接口中只有两部分内容:
//   3.1)、 常量:固定修饰符 public static final
//   3.2)、 抽象方法:固定修饰符 public abstract
//   修饰符可以省略不写,IDE会自动补全
public interface RunnableInterface {
    //常量
    public static final int MAX_SPEED=300;
    //抽象方法
    public abstract void run();
}

package com.llg.learnInterface;
//1、接口中没有构造器
//2、使用interface 声明接口
//3、JDK1.8之前,接口中只有两部分内容:
//   3.1)、 常量:固定修饰符 public static final
//   3.2)、 抽象方法:固定修饰符 public abstract
//   修饰符可以省略不写,IDE会自动补全
public interface JumpableInterface {
    //常量
    public static final double MAX_HEIGHT=200.9;
    //抽象方法
    public abstract void jump();
}

package com.llg.learnInterface;

public class Animal{
    int age;
    public void sleep(){
        System.out.println("sleep ~~");
    }
}

package com.llg.learnInterface;
//4、类 实现implements 接口
//5、java中单继承,多实现
//  一个类只能有一个直接父类
//  一个类可以实现多个接口
//  写法,先继承后实现: class Dog extends Animal implements TestInterface01,TestInterface02{
public  class Dog extends Animal implements RunnableInterface,JumpableInterface{
    @Override
    public void run() {
        System.out.println("run ~~run~");
    }
    @Override
    public void jump() {
        System.out.println("jump ~jump~~");
    }
}
//如果该类是抽象类,则可以不重写接口中的抽象方法
abstract class Dog01 implements RunnableInterface{

}
//如果该类不是抽象类,则必须重写所有接口中所有抽象方法
class Dog02 implements RunnableInterface{
    @Override
    public void run() {
        System.out.println("run ~~run~");
    }
}
package com.llg.learnInterface;

public class Learn {
    //程序的入口
    public static void main(String[] args) {
        //接口是抽象的无法实例化,不可创建对象
        //TestInterface01 t=new TestInterface01();
        RunnableInterface t=new Dog();//向上转型, 接口指向对象  多态应用
        t.run();
        //接口中常量的访问
        System.out.println(RunnableInterface.MAX_SPEED);//接口名.常量名
        System.out.println(Dog.MAX_SPEED); //实现该接口的类名.常量名
        System.out.println(t.MAX_SPEED);//实现该接口的类的对象名.常量名
    }
}

上一篇:程序员求职经常踩的5个坑,你踩过几个?第4个坑92%都踩过!


下一篇:Chrome 92 破坏性功能,我这弹窗有何用?