java高级——接口

接口

从java8开始,接口中允许定义默认方法

备注:接口中的默认方法可以解决接口升级的问题

默认方法的格式:

public default 返回值类型方法名称(参数列表){

//方法体

}

注意:

1.接口的默认方法,可以通过接口实现类对象直接调用

2.接口的默认方法,也可以在接口的实现类中进行覆盖重写

接口中的常量

格式:

public static final 数据类型 常量名称=数据值;

注意事项:

1.接口中的常量,可以省略public static final,注意,不写也认为是常量

2.接口中的常量,必须进行赋值

3.接口中的常量名称,使用完全大写的字母,多个单词用下划线连接

接口与抽象类:

相同点:

1.都包含抽象方法

2.都代表系统的抽象层,都不能被实例化

3.用于描述系统的服务,不必提供具体的实现

不同点:

一个类只能继承一个直接父类,但是可以实现多个接口

抽象类更多的用于代码的复用,接口便于代码维护

多用接口,少用继承

/**
 *接口
 */
public interface Camera {
​
    /**
     * 拍照
     */
    public void photo();
​
    /**
     * 录像
     */
    public void video();
}
​
/**
 * 抽象门类
 */
public abstract class Door {
​
    //开门
    public abstract void open();
​
    //关门
    public abstract void close();
}
public class FDoor extends Door implements Lock,Camera{
    @Override
    public void open() {
        System.out.println("开门");
    }
​
    @Override
    public void close() {
        System.out.println("关门");
    }
​
    @Override
    public void lock() {
        System.out.println("加锁");
    }
​
    @Override
    public void unLock() {
        System.out.println("开锁");
    }
​
    @Override
    public  void photo() {
        System.out.println("上锁后拍摄照片2张");
    }
​
    @Override
    public void video() {
        System.out.println("保持录像,默认录像30分钟清除一次");
    }
​
    @Override
    public void test() {
        System.out.println("实现类重写");
    }
}
​

注意事项:

1.接口中的抽象方法,修饰符必须是两个固定的关键字:public abstract

2.这两个关键字修饰符,可以选择性省略

java中四种权限访问修饰符

publicprotecteddefault(默认的)【可以不写】private
同一个类中yesyesyesyes
同包子类yesyesyesno
同包非子类yesyesyesno
不同包子类yesyesnono
不同包非子类yesnonono

方法的访问与类的访问规则相同!


版权声明:本文为kk1213_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。