面向对象回顾

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);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值