Java 关键字

Java关键字

权限修饰符

1.权限从小到大 private、缺省、protected、public
2.4种权限可以用来修饰类的属性、方法、构造器、内部类
3.对于class的权限修饰只可以用public和default(缺省);public类可以在任意地方被访问,default类只可以被同一个包内部的类访问

修饰符 类内部 同一个包 不同包的子类 同一个工程
private Yes - - -
(缺省) Yes Yes - -
protected Yes Yes Yes -
public Yes Yes Yes Yes

不同包下的普通类(非子类)不能调用声明为private、缺省、protected权限的属性

接口interface

Java不支持多重继承,接口可以实现多重继承。

接口的使用

本质:接口是用来继承的,接口只定义了标准

  1. Java中接口与类是并列的结构

  2. 定义接口 -> 定义接口中的成员

    JDK7及以前,只能定义
    全局常量:public static final (写的时候可以省略)
    抽象方法:public abstract
    JDK8
    静态方法:public static,只能接口来调用
    默认方法: public default

  3. 接口中不能定义构造器,意味着接口不可以实例化

  4. Java开发中,接口通过让类去实现(implements)的方式来使用

    如果实现类覆盖(实现)了接口中的所有抽象方法,则此实现类就可以实例化
    如果实现了没有覆盖(实现)接口所有的抽象方法,则此实现类为抽象类(加上abstract)
    JDK8
    默认方法,可以通过接口名.super.方法名调用

  5. Java类可以实现多个接口 –> 弥补Java单继承性的局限性

    格式:class AA extends BB implements CC,DD
    如果继承的接口中有同名同参的默认方法,实现类需要重写该方法,不然会报

  6. 接口与接口之间可以多继承

  7. 接口的具体使用,体现了多态性

    一个方法的形参申明为接口
    实参为接口的实现类

接口的主要用途就是被实现类实现 -> 面向接口编程

类优先原则
如果实现类继承父类和实现的接口中声明了同名同参数的默认方法,那么子类在没有重写此方法的情况下,默认调用的是父类的该方法

interface Flyable{
    //全局常量
    public static final MAX_SPEED = 7000;
    //也可以省略不写
    int MIN_SPEED = 1;
    //抽象方法
    public abstrat void fly();
    //也可以省略
    void stop();
}

//类去实现接口,Plane称为实现类
class Plane implements Flyable{
//接口中的方法分abstract方法与default默认方法
//实现类要去实现抽象方法
}

//p为实现类对象
Plane p = new Plane();

匿名对象的使用

匿名对象:没有显示赋变量名
写法:new 类(){}
使用场景:该对象只使用一次,用完就丢了

举例

//这里的p是有名字的对象
Person p = new Person();
p.getName();

//匿名的对象
new Person().getName();

创建匿名实现类的对象

写法:new 接口(){实现抽象方法}

//*****************接口的非匿名实现类非匿名对象
interface Flyable{
    public abstrat void fly();
}
//Plane称为实现类
class Plane implements Flyable{
	@Override
	void fly(){};
}
//p为实现类对象,p为名字
Plane p = new Plane();

//******************接口的非匿名实现类的匿名对象
new Plane();

//***********************************接口的匿名实现类的非匿名对象对象 = 匿名实现类的对象
Flyable p =  new Flyable(){}
posted @ 2021-07-12 16:44  rananie  阅读(25)  评论(0编辑  收藏  举报