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不支持多重继承,接口可以实现多重继承。
接口的使用
本质:接口是用来继承的,接口只定义了标准
-
Java中接口与类是并列的结构
-
定义接口 -> 定义接口中的成员
JDK7及以前,只能定义
全局常量:public static final (写的时候可以省略)
抽象方法:public abstract
JDK8
静态方法:public static,只能接口来调用
默认方法: public default -
接口中不能定义构造器,意味着接口不可以实例化
-
Java开发中,接口通过让类去实现(implements)的方式来使用
如果实现类覆盖(实现)了接口中的所有抽象方法,则此实现类就可以实例化
如果实现了没有覆盖(实现)接口所有的抽象方法,则此实现类为抽象类(加上abstract)
JDK8
默认方法,可以通过接口名.super.方法名调用 -
Java类可以实现多个接口 –> 弥补Java单继承性的局限性
格式:class AA extends BB implements CC,DD
如果继承的接口中有同名同参的默认方法,实现类需要重写该方法,不然会报 -
接口与接口之间可以多继承
-
接口的具体使用,体现了多态性
一个方法的形参申明为接口
实参为接口的实现类
接口的主要用途就是被实现类实现 -> 面向接口编程
类优先原则
如果实现类继承父类和实现的接口中声明了同名同参数的默认方法,那么子类在没有重写此方法的情况下,默认调用的是父类的该方法
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(){}