文章标题

来源:互联网 发布:电脑连接wifi网络差 编辑:程序博客网 时间:2024/06/07 01:14

7.29总结

1.抽象类

  • 父类知道子类应该包含什么方法,但无法准确知道子类如何实现这些方法,即父类与子类的方法功能声明相同,方法功能主体不同,这时只抽取方法声明,不抽取方法主体,则该方法为抽象方法。
  • 有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。
  • 抽象类跟抽象方法都要用关键字abstract修饰。

2.抽象类的特点

  • 抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
  • 抽象类不可以直接创建对象。
    原因:调用抽象方法没有意义。
  • 只有重写了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
    抽象类Shape
    Circle类
    JuXing类
    测试类及结果

3.接口

  • 只描述所应具备的方法,并没有具体实现。
  • 与类相似的结构,只包含常量和抽象方法。
  • 接口采用interface关键字来声明。
  • 一个接口类型的变量可以引用人和实现该接口的类的实例。
    Edible接口
    Fruit
    Apple
    Orange
    Animal
    Chicken
    Tiger
    TestEditble及结果

4.接口中成员的特点

  • 接口中的数据只能是常量,有固定的修饰符修饰,public static final 。
  • 接口中定义的方法也有固定的修饰符,public abstract。
  • 接口不可以直接创建对象。
  • 实现类,即接口的子类必须在重写接口中所有的抽象方法后,子类才可以实例化,否则子类是一个抽象类。

5.接口与抽象类的比较

  • 相同点

    • 都用于被其他类实现或继承。
    • 都包含抽象方法,其子类或实现类都必须重写所有的抽象方法。
  • 区别

    • 抽象类中可以既包含抽象方法,又包含普通方法,并且抽象类可以为普通方法提供实现,避免子类重复实现这些普通方法。

      接口只能包含抽象方法。

    • 接口中的数据必须是常量,可通过接口名.常量名访问。

      抽象类中的数据可以有常量,也可以有变量。

6.内部类

  • 将一个类定义在另一个类或方法里,这样的类称为内部类。
  • 一般包括四种:成员内部类、局部内部类、静态内部类和匿名内部类。

(1). 成员内部类(位于另一个类的的内部)

a、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接new一个内部类对象。

b、创建内部类对象格式:
内部类 对象名 = 外部类对象.new 内部类()

c、外部类不能直接使用内部类的成员和方法。
可先创建内部类对象,然后通过内部类对象来访问外部类的成员变量和方法。

d、如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,若要访问外部类的成员方法,可使用this关键字:
外部类名.this.同名变量 外部类名.this.同名方法()
成员内部类
成员内部类结果

(2).局部内部类

  • 局部内部类是内部类定义在外部类的方法中,局部内部类只能在外部类的方法中使用
  • 局部内部类不能在外部类的方法以外的地方使用,所以局部内部类不能使用访问控制符和static修饰。

局部内部类
局部内部类执行结果

(3).静态内部类

  • static关键字修饰的内部类。
特点:
  • 不能直接访问外部类的非静态成员,但可通过new 外部类().成员 的方式访问。
  • 若外部类的静态成员和内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;
    若不同,可通过成员名直接调用外部类的静态成员。
  • 创建静态内部类的对象时,不需外部类的对象,可直接创建。
    内部类 对象名= new 内部类

静态内部类
静态内部类执行结果

(4).匿名内部类

  • 是唯一一种没有构造器的类,因而使用范围有限,大部分匿名内部类用于接口回调。
  • 是创建某个类型子类对象的快捷方式。
    Button
    Click
    监听器接口
    监听器的测试类
原创粉丝点击