接口与内部类

目录

1、什么是接口
2、面向接口编程
3、内部类

🍜什么是接口?

接口是个标准,比抽象类还抽象的类,特点如下:

  1. 在接口内定义的变量默认public static final,都是常量,必须在定义就赋值
  2. 在接口中默认方法public abstract 抽象方法(抽象方法无方法体!!!!)
  3. 在接口中可以定义静态的方法
  4. JDK1.8之后支持default void fun(){}修饰方法
  5. 无构造器,所以无法实例化对象
🍜面向接口编程
  1. 一个类可以继承多个接口,需要重写接口内的全部方法
  2. 接口可以继承接口,并且无需重写方法
  3. 接口可以继承多个接口
  4. 单继承,仅限类
    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 :判断左边是否是右边的实例对象


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每日小新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值