Java面向对象(下)——Java重开学习笔记

时间:2021-6-19 作者:qvyue

抽象、接口、内部类

抽象类

使用abstract修饰类名就能得到一个抽象类,使用abstract修饰方法也能得到一个抽象方法。只有在抽象类中才能定义抽象方法,而抽象方法指的是只有方法签名的方法,长这样: public abstract void test();

抽象类就是为多态而生的。只有通过一个子类重写了父类的所有抽象方法时,抽象类才会发挥作用。也就是说,抽象类是一个给其子类提供参考的一个类,它的抽象方法可能在设计时不确定具体该怎么实现,只是知道这种类该有这些方法。然后把具体的方法功能留给子类去完成。

抽象类中可以有非抽象方法。而抽象方法只能存在于抽象类中,这为了防止实例化含有抽象方法的类。毕竟抽象方法根本没法调用。

接口

接口相当于抽象类的抽象类。在接口中,只允许定义方法签名和常量。接口的作用只是为了定义一种规范,类的规范。Java中不允许多继承,但是允许多接口实现。

这一大堆接口抽象类多态,各种名词看起来头疼,但它们最终的目的都是为了在开发程序时,让我们可以以我们自己的视角来开发、理解程序的每一部分,从而使编程更容易,更轻松。写接口也许比写接口实现还要难。

内部类

内部类就是定义在一个类中的类,内部类有很多种分类。

  • 成员内部类,就是定义在一个类中的类,级别就和成员变量,成员方法一样。所以叫成员变量。成员内部类可以使用外部类的私有成员。
  • 静态内部类,和成员变量一样定义在类中,但是它多了static修饰,所有它也无法使用外部类的成员。因为它加载的时机可能比外部类还早。
  • 局部内部类,定义在方法中的一个类,它的生命周期和局部变量一样,因此而得名。
  • 匿名内部类,匿名内部类通常与接口配合。实例化一个接口,然后重写它的方法,再把它赋值给一个变量。这样一个经过重写方法的接口,就是匿名内部类。

各种内部类的代码实现:

class test {
    private int a;

    public void test(){
        
        //局部内部类
        class c {
            private int localA;
            public void localTest();
        }
        ...
    }

    //成员内部类
    class b {
        private int subA;

        public void subTest(){
            ...
        }
    }

    //静态内部类
    static class c {
        private int staticA;

        public void staticTest(){
            ...
        }
    }

}

class another {
    public satic void main(){
        //匿名内部类
        test t = new test() {
        @Override
        ...
    };
    }
}
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。