Java学习 第十五天 抽象类 接口 内部类

抽象类

  • 抽象方法:
    将共性的行为,抽取到父类,但是每个子类执行的内容是不一样的,所以在父类中不能确定具体的方法体,该方法就定义为抽象方法
  • 抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

抽象方法定义格式:

public abstract 返回值类型 方法名(参数列表);

抽象类的定义格式:

public abstra 类名{}

抽象类和抽象方法的注意事项

  • 抽象类不能实例化
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  • 可以有构造方法
  • 抽象类的子类:

接口可以理解为一种规则,一种行为的抽象

接口的定义和使用

  • 接口用关键字 interface来定义

    public interface 接口名{}

  • 接口不能实例化

  • 接口和类直接是实现关系,通过implements关键字表示

    public class 类名 implements 接口名{}

  • 接口的子类(实现类)

    要么重写子类
    要么是抽象类

  • 注意1:接口和类的关系,可以单实现,也可以多实现
    public class 类名 implemengts 接口名1,接口名2{}

  • 注意2:实现类还可以继承一个类的同时实现多个接口
    public class 类名 extends 父类 implemengts 接口名1,接口名2{}

接口中成员的特点
成员变量

只能是常量
默认修饰符:public static final

构造方法

没有

成员方法

只能是抽象方法
默认修饰符:public abstract
JDK7以前:接口只能定义抽象方法

接口和接口直接的关系
继承关系,可以单继承,也可以多继承
image

image
image

  • 什么是内部类

写在一个类里面的类叫做内部类

  • 什么时候用到内部类
    B类事物是A类的一部分,且B单独存在没有意义

比如:汽车发动机,Array list的迭代器

public class Outer {
    private int a = 10;

    class InnerZ {
        private int a = 20;

        public void show() {
            int a = 30;
            //Outer.this就是指向外部类
            System.out.println(Outer.this.a);//10
            
            //this是只本类
            System.out.println(this.a);//20
            
            //就近原则,局部变量
            System.out.println(a);//30
        }
    }
}

        Outer.Inner inner = new Outer().new Inner();
        inner.show();

输入结果

10
20
30

静态内部类
静态内部类只能访问外部类当中的静态变量和静态方法,如果想要访问非静态的需要创建外部类的对象

public class Outer {

    static class Inner {
        public void show() {
            int a = 30;
        }

        public static void show2() {
            int a = 30;
            System.out.println(a);//30
        }
    }
}
        //创建静态内部类的对象
        //只要是静态的东西,都可以用类名点直接获取
        //静态内部类创建对象后,才能访问外部类的非静态成员
        //注意这个new Outer.Inner();
        Outer.Inner oi=new Outer.Inner();
        Outer.Inner.show2();

局部内部类
将内部类定义在方法里面的就叫做局部内部类
外界无法直接使用,需要在方法内部创建对象并使用
该类可以直接访问外部类的成员,也可以访问方法内的局部变量

匿名内部类(重点)
匿名内部类本质上就是隐藏了名字的内部类
格式:

new 类名或者接口名(){

重写方法;

};

posted @ 2025-03-22 10:13  无敌的二进制  阅读(19)  评论(0)    收藏  举报