第四章,java面向对象特性

  • 4.1 特性

  封装,继承,

  多态(编译时:方法的重载,同一个类里面不同方法可以用同一个方法名只是传入参数不同,

     运行时多态:基础类提供一个接口,在编译时只调用基础类的接口,在运行时才确定到底是哪一个子类提供的服务。

  • 4.2 类的定义

  类的基本结构:类声明,成员变量(分为类变量static,实例变量),构造方法,成员方法(临时变量),

  成员方法里面,或者构造函数里面的临时变量名和成员变量同名,需要用this,来显露成员变量,否则在里面调用这个名字默认是临时变量。

  参数传递方式:

  1. 基础类型,传值,会改变调用参数值,以及定义的传入参数值
  2. 引用类型,方法体改变引用地址,new 一个新类型,不会改变调用参数值,定义的传入参数值最终被释放
  3. 引用类型,改变引用地址存储值,会改变调用参数值。

  可变参数:

  (int... nums) ,传入的参数1,2,3,4 可以是不同个数      

  访问控制:访问控制只是针对类,不针对对象。

  This 关键字是为了区分成员变量和局部变量的,

  •   *类:当你在其它类的外面声明一个类时,Java就认为该类是一个*类。如果你在一个*类中声明一个类,并且在该嵌套类的声明前加上static的修饰符,你就得到了一个嵌套*类。以下的代码段声明了一个*类和一个嵌套*类:class TopLevelClass{static class NestedTopLevelClass{}}就象静态的字段和静态的方法一样(也可称为类字段和类方法),一个嵌套的*类也是与对象无关的。

警告:一个嵌套*类不能访问任何外部类的实例成员(即所有的非静态字段和非静态方法)。      使用嵌套*类,你不可以访问外部类的实例字段或者调用该类的实例方法。要访问实例成员,Java支持内部类。内部类和嵌套*类相似,不同的地方是你不会在内部内的声明前加上static关键字。我们以下就讨论一下内部类,先从实例内部类开始

  *类修饰符缺省。

  • 定义在某个类(或接口,下同)内部的类,称为嵌套类(nested class),相应的,其所在的类称之为该类的外围类(enclosing class)或包裹类。

嵌套类必须要用static修饰,public static class Static{}。不用static修饰的类是一个内部类。

非嵌套类称为*类(top-level class),一个 .java 文件中可以有若干个*类(含抽象类和接口),但只能有一个被 public 修饰的类,且该类必须和 .java 文件同名。

  • 内部类

  内部类、匿名内部类都可以访问外部类的对象的域,为什么会这样,实际上是因为内部类构造的时候,会把外部类的对象this隐式的作为一个参数传递给内部类的构造方法,这个工作是编译器做的,他会给你内部类所有的构造方法添加这个参数

上一篇:ECS使用体验


下一篇:使用Object的wait,notify,notifyAll做线程调度