【Java基础】8.面向对象高级特征

类的继承:Java定义一个类,通过关键字extends继承一个已有的类,又叫泛化,Java只能单继承

      父类(超类、基类)、 子类(派生类)    每个类只有一个直接父类,每个父类可以有多个子类

      子类继承父类的所有属性和方法(构造方法除外),也可以增加自己的属性和方法

      好处:编码更高效、易维护、代码重用

      子类实例化,先实例化其父类,再实例其子类,子类实例化不仅调用本类的构造器,还要调用父类的构造器

      super():调用父类构造器,该语句只能出现在子类构造器中,且必须是第一行

      this():调用本类的构造器,只能写在第一行,super与this不能同时出现

:包允许将类组合成较小的单元,有助于避免命名冲突、允许在更广的范围保护类、数据和方法

  可以是类、接口和子包的集合

  package语句为java源文件第一条语句

  不同包下要用import引用才能使用

封装:使用访问权限修饰符对类的成员进行控制 public protected default private

    目的:隐藏类的实现细节,限制对属性的不合理操作、便于修改、增强可维护性、进行数据检查

重写:对父类继承的方法进行重写

    规则:必须与父类的方法名称、返回值类型、参数数量类型顺序相同

        子类方法的权限修饰符不能小于父类的方法,只能抛出父类方法异常或异常的子类

引用数据类型转换向上转型,子类转换为父类,自动转换,但会损失掉子类新扩展的属性和方法

          向下转型,父类转换成子类,强制转型,只有曾经向上转换过的对象才可以向下转换

instanceof运算符:知道某个引用指向那种类型的对象,判断经过向上转型后的对象是哪一个子类的

多态:具有表现多种形态的能力的特征, 同一个实现接口,使用不同实例而执行不同操作

    不同对象对同一行为做出的不同响应,只发生在非静态方法中

    存在必要条件:有继承或实现,有重写,父类引用指向子类

    表现形式:重写、重载

public class test{
      public static void main(String[] args){
              Shape s1=new Rectangle(10,20);
              Shape s2=new Circle(10);
              Shape s3=new Triangle(3,4,5);  

              s1.show();//分别执行三个子类的show方法,不执行
              s2.show();//父类的show方法,多态
              s3.show();
    }  
}    

final关键字:可以修饰类,使之不能产生子类

       修饰变量,使之不能被重新赋值

       修饰方法,使之不能被子类覆盖、重写

抽象类:抽象方法与非抽象方法的集合  在类前面加上abstract  

    抽象方法:只有方法的声明,没有方法的实现

    抽象类不能被实例化

    抽象方法必须在子类中实现,否则子类也要声明为抽象类

    抽象方法不能为静态的

接口:只包含常量和抽象方法,没有变量和方法的实现 常量默认public static final

    对类来说是一套规范、行为协议,降低耦合性

    接口不是类,不能被实例化,没有构造器 用interface关键字定义

    接口可以继承

    类实现接口用implements,这个类必须实现接口中的所有抽象方法,否则类要声明为抽象类

    类可以实现多个接口  类的单继承多实现  接口可以多继承

内部类:定义在类里面的类  普通类的权限只有public friendly ,内部类有四种权限  不能定义static变量    

    内部类可以直接访问外部类的变量和方法,外部类不能直接访问内部类的变量和方法,要创建内部类的对象

    只能被外部类调用,避免错误调用

    静态内部类:static标识 不能访问外部类的非静态成员

          非静态内部类只能定义非静态成员、静态内部类可以定义静态成员和费静态成员

    局部内部类:在类的方法体或程序块中定义的内部类

          只能访问外部类中的final类型的变量

posted @ 2017-09-14 18:59  chain155  阅读(90)  评论(0)    收藏  举报