Java_类与对象07_抽象类与接口

1.     抽象:abstract

  a)    修饰类:抽象类,抽象类不能实例化(不能new),只能使用抽象类的子类

        抽象类也有构造方法(抽象类的子类需要在自己构造方法的第一行调用父类的构造方法)。

        那么问题来了:

          抽象类有构造方法,但是不能实例化?构造方法的作用是什么呢?

          用于子类访问父类数据的初始化

  b)    修饰方法:抽象方法抽象方法只有方法的声明没有方法的实现子类必须重写父类中所有的抽象方法(当子类为抽象类时,子类可以不重写父类中的抽象方法或只重写父类中部分的抽象方法)。

         抽象方法所在的必须为抽象类。抽象类中不一定有抽象方法。

  c)     修饰接口

  d)    abstract不能与哪些关键字一起使用:final,private,static,

      a:final     冲突

      b:private 冲突

      c:static 无意义

  e)    final关键字:

    i.      修饰变量:只能赋值一次。

    ii.     修饰方法:方法不能被子类重写。

    iii.    修饰类:不能被继承。

    面试题:final修饰局部变量的问题

        基本类型:基本类型的值不能发生改变。

        引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以改变的。

  f)     阻止类被继承有几种方法:1.用final修饰类。2.使用private修饰构造方法。

  总结:

    1).   非抽象类的子类可以为抽象类。

    2).   下面的抽象类可以new

        abstract class Method {
            public int sum() {
                Method m = new Method() {
                    public void run() {
                    }
                };
                return 0;
            }
        
            public abstract void run();
        }

2.     接口:interface

  a)    接口的作用:使JAVA实现多继承

  b)    接口的成员:

    i.     常量:接口中的变量必须为public static final。声明后必须赋值。

    ii.    抽象方法:接口中的方法必须为public abstract的。

  c)     接口不是类,接口中没有构造方法。

  d)    类与接口的关系:

    i.      类可以实现(implements)接口。

    ii.     当类实现接口时,类必须重写接口中所有的抽象方法。

    iii.    一个类可以实现多个接口。

  e)    接口不能实例化(不能new)。只能使用接口的实现类

  f)     接口与接口之间的关系:

    i.      接口可以继承接口。

    ii.    一个接口可以继承多个接口。

3.     内部类:一个类中嵌套另一个类

  a)    内部类可以直接使用外部类所有的成员,包括private的成员。

4.     类与类,类与接口,接口与接口

  A:类与类

    继承关系,只能单继承,可以多层继承

  B:类与接口

    实现关系,可以单实现,也可以多实现。

    还可以在继承一个类的同时,实现多个接口

  C:接口与接口

    继承关系,可以单继承,也可以多继承

5.     抽象类和接口的区别

  A:成员区别

    抽象类:

      成员变量:可以变量,也可以常量

      构造方法:有

      成员方法:可以抽象,也可以非抽象

    接口:

      成员变量:只可以常量

      成员方法:只可以抽象

  B:关系区别:

    类与类:继承,单继承

    类与接口:实现,单实现,多实现

    接口与接口:继承,单继承,多继承

  C:设计理念不同

    抽象类:is a,抽象类中定义的是共性功能。

    接口:like a,接口中定义的是扩展功能。

猜你喜欢

转载自www.cnblogs.com/zhaolanqi/p/9235151.html
今日推荐