Java——day08

类的继承、内部类

类的继承

继承:面对对象设计的特征之一

继承的特点:
  1. 子类继承父类,子类只能有一个父类,父类可以有多个子类
  2. 子类继承了父类的除私有的成员属性和方法外的所有属性和方法(构造方法不包括在内)
  3. 子类会默认调用父类的无参构造器
  4. 子类只能有一个父类,父类可以有一个父类(A继承B,B继承C)
继承的优点:

继承有利于代码的复用,通过继承可以更有效地组织程序结构,并充分利用已有的类来完成复杂的任务,减少了代码冗余和出错的几率。

封装:隐藏实现功能的过程,提供实现功能的接口;
多态:对象在不同情况下具有不同表现的能力;

方法的重写:必须是子类继承父类,子类重写父类的方法
方法名、返回值、参数列表、权限修饰符都要一致,修饰符、方法体可以不一致。

变量的隐藏:子类与父类的成员变量名相同,局部变量与成员变量名相同,会产生变量隐藏。

抽象类

抽象:不同角色站在不同角度看世界
抽象类:被关键字abstract修饰的类
当类中的某一个方法不能实现功能,就定义为抽象类
抽象方法:只有方法声明,没有方法体
抽象类中有抽象方法,也可以有非抽象方法;有抽象方法的类必须是抽象类

抽象类与普通类的不同:

  • 抽象类有抽象方法,普通类没有;
  • 抽象类不能实例化;
  • private、final、static、构造方法不能声明为抽象方法

接口

接口是一个特殊的抽象类,它只包含有常量和抽象方法,没有变量和方法实现。

[public] interface 接口名[extends 父接口列表]{
    成员常量;//默认是public static final修饰的
    成员方法;//默认是abstract修饰的
 }

注意:

  • 定义接口是用interface,定义类用class;
  • 所有成员常量默认是public static final修饰过的;
  • 所有成员方法都是abstract修饰过的;
  • 实现使用implements;
  • 接口是多实现,类是单继承;
  • 普通类实现接口必须实现接口里面所有的方法,抽象类可以有抽象方法,实现接口可以实现里面的方法,也可以不实现;

抽象类与接口的不同:

  1. 抽象类是一个类,类是继承,接口是实现;
  2. 抽象类是使用class定义,接口使用interface定义
  3. 接口只有静态的常量,抽象类有成员变量;
  4. 接口只有抽象方法,抽象类可以有非抽象方法;
  5. 抽象类是单继承,接口是多实现;
  6. 抽象类有构造方法,接口没有;

内部类、匿名类和最终类

内部类:指被嵌套在另一类中或者是方法中的类;

  1. 成员内部类:定义在成员位置的类
  • 可以在非静态的方法中创建对象;
  • 可以在本类中创建非静态的成员变量对象;
  • 不能在本类以外创建对象;
  1. 静态内部类:static修饰的成员内部类
  • 可以在本类成员方法中创建对象
  • 可以在本类以外创建对象;
  • 可以创建静态的成员变量对象;
  1. 方法内部类:定义在成员方法里面;
  • 作用域:只在本方法中调用,出了这个方法就没法用;
  • 方法内部类不能是静态内部类;

匿名类:匿名对象;

最终类:被final修饰的类,不能被继承;

你可能感兴趣的:(Java——day08)