java中的面向对象

面向对象

面向对象的设计思想

java中的面向对象


对象的创建和使用

  • 必须用new创建对象
  • 用对象(引用).成员变量引用对象的成员变量
  • 用对象(引用).方法调用对象的方法
  • 同类的每个对象共享该类的方法
  • 同类的每个对象有不同的成员变量存储空间

有关方法

  • 方法不能独立定义,只能在类里定义
  • 方法要么属于类本身,要么属于该类的一个对象
  • 方法不能独立执行
  • 构造的方法(和类同名)前无返回值,void也不行
  • 构造过的方法不能再次定义
方法的重载与重写
  • 方法的重载(Overload)
    一个类中定义的不同方法可以名字相同,参数不同。调用时会根据不同的参数表选择不同的方法。
  • 方法的重写(Overwrite)
    1. 子类继承父类中的方法时,对父类的方法进行重新定义。
    2. 若子类中的方法与父类中的方法具有相同的方法名、返回类型、参数表,则新方法将覆盖原有的方法。(如需父类中原有方法,可用super关键字,引用当前类的父类)
    3. 重写的方法不能使用比被重写方法更严格的权限

几个关键字

static
  • 若方法定义在某个类里,且使用static修饰,则这个方法属于这个类,否则属于这个类的实例
  • 同一个类的一个方法调用另外一个方法,如果被调方法是普通方法,则默认用this作为调用者;如果是静态方法,则默认用类作为调用者
this 关键字
  • 在类的方法定义中使用,表示该方法的对象的引用
  • 必须指出当前使用方法的对象是谁时要使用this
  • 可用this处理方法的成员变量和参数重名
  • 可看作一个值为当前对象的引用的变量
  • static修饰的方法中不能用this引用(不能访问不使用static修饰的普通成员)即静态成员不能直接访问非静态成员,因为静态方法不再需要通过对象访问
super关键字
  • 指向当前对象的父类对象
final关键字
  • final的变量的值不能被改变
    • 成员变量
    • 局部变量 (形参 ) 相当于C中的const
  • final的方法不能被重写
  • final的类不能被继承

package 和import

  • 执行一个类需要写全包名
  • class文件的最上层包的父目录位于classpath下
  • import xxx.* 引入所有类
  • 打包jar
    原文件路径加 -cvf xx.jar .

类的继承与权限控制

  • 用extends实现 modifier class name extends superclass(基类)
  • 子类自动拥有基类的所有成员
  • 只能单继承
继承中的构造方法
  • 子类的构造过程必须调用其基类的构造方法
  • 子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法
    • 使用this(argument_list)调用本类的另外构造方法
    • 如果调用super,必须写在子类构造方法的第一行
  • 如果子类的构造方法没有显示的调用基类构造方法,则系统默认调用无参数的构造方法,若基类中没有无参数的构造方法,编译出错
访问控制

java中的面向对象


多态 (动态绑定)

  • 存在条件
    1. 要有继承
    2. 要有重写
    3. 父类引用指向子类对象
  • 实质
    当调用父类里面被重写的方法时,实际new的是哪个子类对象,就调用哪个子类对象的

对象转型

  • 一个基类的引用类型变量可以指向其子类的对象
  • 一个基类的引用不能访问其子类对象新增加的成员(属性和方法)
  • 可以使用引用变量instanseof类名来判断该引用变量是否指向该类或该类的子类
  • 子类的对象当做基类的对象来使用,称为向上转型,反之为向下转型

抽象类 abstract

  • 抽象方法只需定义,不需实现。因为它被引用时会被重写
  • 含抽象方法的类必须被声明为抽象类,加abstract修饰
  • 抽象类必须被继承
  • 抽象类不能实例化

Object类中的equals方法

  • x.equals.(y) x,y是同个对象时才返回ture
  • 根据需要重写

接口(特殊的抽象类)

  • 多个无关的类可以实现同一个接口
  • 一个类可以实现多个无关的接口
  • 类似继承,接口与实现类之间存在多态性
    -写法 ….interface … xxx class xxx implements xxx

有关内存

java中的面向对象