面向对象回顾

  • Post author:
  • Post category:其他


62.面向对象回顾

1)面向对象的软件开发方法

  • 软件系统即各种对象的集合
  • 按对象设计出来的系统结构较文档
  • 子系统相对独立,提高了软件的可维护性
  • 支持封装、继承和多态,提高了软件的可重用性和扩展性

2)万物皆对象

  • 软件系统所模拟的真实世界中,所有的实体都可以抽象为对象
  • 每个对象都是唯一的

63.对象

  • 对象具有属性和行为(方法)
  • 对象具有状态

1)状态指某个瞬间对象各种属性的取值

2)对象的方法可以改变对象自身的状态

  • 对象都是属于某个类,每个对象都是某个类的实例

64.类

  • 类是一组具有相同属性和行为的对象的抽象
  • 开发人员自定义数据类型
  • 面向对象编程的主要任务就是定义各个类
  • 对象是类的实例,类是对象的模板

65.面向对象三大特征

面向对象三大特征

  • 封装
  • 继承
  • 多态


封装

  • 隐藏对象的属性和实现细节,仅仅对外公开接口
  • 便于使用者正确的方便理解和使用系统
  • 有助于各种系统之间的松耦合,提高系统独立性
  • 提高软件的可重用 性
  • 把尽可能多的东西藏起来,对外提供便携的接口
  • 把所有的属性藏起来


继承

  • 子类、父类

子类继承了父类的部分属性和方法

子类还可以扩展出新的属性和方法

子类还可以覆盖父类中方法的实现方式

  • 注意

继承的层次不可太多,尽量两到三层

继承的最上层最好抽象

多态

  • 多态

多种实现方式提供服务

  • 向上转型

把引用变量转换为父类类型

  • 向下转型

把引用变量转换为子类类型

Pet pet=new Dog();  //向上转型

Dog dog=(Dog)pet; //向下转型

Animal animal=pet; //向上转型

多态绑定机制

  • 静态绑定

静态方法(静态绑定机制)与引用变量声明的类型绑定,实际上在编译阶段就做了绑定

成员变量(包括静态变量和实例变量,静态绑定机制)与引用变量声明的类型绑定,实际上在编译阶段就做了绑定

  • 动态绑定

实例方法(动态绑定机制)与引用变量实际引用的对象绑定,调用重写后的方法,由运行时JVM决定

//Father类

public class Father {


int var1=10;

static int staticVar=9;

public void m1(){


System.out.println(“父类中的实例方法m1”);

}

public static void staticM1(){


System.out.println(“父类中的静态方法m1”);

}

}

//Son类

public class Son extends Father{


int var1=100;

static int staticVar=90;

public void m1(){


System.out.println(“子类重写父类的方法m1”);

}

public static void staticM1(){


System.out.println(“子类中的静态方法m1”);

}

public static void main(String[] args) {


//多态的绑定机制

//向上转型,父类引用指向子类对象

Father f=new Son();

//实例方法(动态绑定机制)与引用变量实际引用的对象绑定,调用重写后的方法,由运行时JVM决定

f.m1();

//静态方法(静态绑定机制)与引用变量声明的类型绑定,实际上在编译阶段就做了绑定

f.staticM1();

/*//通过类名可以调用各自的静态方法,非多态绑定(普通类名调用方法)

Father.staticM1();

Son.staticM1();*/

//成员变量(包括静态变量和实例变量,静态绑定机制)与引用变量声明的类型绑定,实际上在编译阶段就做了绑定

System.out.println(f.var1);

System.out.println(f.staticVar);

}

}



版权声明:本文为m0_62084473原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。