目录
🍜什么是接口?
接口是个标准,比抽象类还抽象的类,特点如下:
- 在接口内定义的变量默认public static final,都是常量,必须在定义就赋值
- 在接口中默认方法public abstract 抽象方法(抽象方法无方法体!!!!)
- 在接口中可以定义静态的方法
- JDK1.8之后支持default void fun(){}修饰方法
- 无构造器,所以无法实例化对象
🍜面向接口编程
- 一个类可以继承多个接口,需要重写接口内的全部方法
- 接口可以继承接口,并且无需重写方法
- 接口可以继承多个接口
- 单继承,仅限类
Eg:Imples类
public class Imples implements Inters{
public static void main(String[] args) {
Inters x=new Imples();
x.run();
Inters y=new Imples(){
//再次重写
@Override
public void run() {
System.out.println("我又被重写了");
}
};
y.run();
//调用静态方法
Inters.method();
}
//重写接口抽象方法
@Override
public void run() {
System.out.println("我被重写了");
}
}
Eg:和Inters类:
public interface Inters {
int age=10;
String name="张三";
void run();
static void method(){
System.out.println("我是静态的方法");
}
}
🍜内部类
局部内部类
Eg:Inner类:只能在方法内使用,作用域小
public class InnerClass {
public static void main(String[] args) {
InnerClass i=new InnerClass();
i.d1();
i.d2();
}
public void d1(){
System.out.println("我是d1方法发");
class d3{
int age=10;
public void prints(){//内部类不能定义静态方法
System.out.println("我是局部内部类");
}
}
//只能在di方法内调用
d3 d=new d3();
d.prints();
}
public void d2(){
System.out.println("~~~~~~~~");
}
}
成员内部类
Eg:Inner类:与类的成员方法同级,需要new对象调用
public class Inner01 {
public static void main(String[] args) {
//调用成员内部类
Inner01.d1 in=new Inner01().new d1();
in.d1();
//调用普通成员方法
Inner01 i=new Inner01();
i.d2();
}
class d1{
int age=10;
public void d1(){
System.out.println("我是成员内部类!!!");
}
}
public void d2(){
System.out.println("~~~~~~~~");
}
}
静态内部类
Eg:Inner类:跟类的静态方法同级,可以直接被静态方法直接调用,其中内部静态类的动态方法调用比较特殊,需注意,需要写全类名,防止系统无法辨别是哪个类
public class Inner02 {
public static void main(String[] args) {
d4();//通过静态方法调用静态内部d1类的静态方法
d1.d3();//通过内部静态类调用静态方法
//调用静态内部类的成员变量和方法
Inner02.d1 i=new Inner02.d1();
System.out.println(i.age);//10
i.d2();//我是静态内部类!!!
}
static class d1{
int age=10;
public void d2(){
System.out.println("我是静态内部类!!!");
}
public static void d3(){
System.out.println("我是静态内部类的静态方法");
}
}
public static void d4(){
//静态调用静态
Inner02.d1.d3();
}
}
🥨小知识:valueof();
-
valueOf() 方法有以下几种不同形式:
-
valueOf(boolean b): 返回 boolean 参数的字符串表示形式。.
-
valueOf(char c): 返回 char 参数的字符串表示形式。
-
valueOf(char[] data): 返回 char 数组参数的字符串表示形式。
instaceof :判断左边是否是右边的实例对象