面向对象简单介绍

面向编程 我们在结局问题  注重的事解决问题的每一个步骤和过程。

面向对象,注重的事在问题中,涉及到哪些对象,以及对象之间有哪些关系。

 

核心思想

 

缺点

总结

面向编程

自顶向下,逐步求精,也就是把功能分解。

设计数据结构

编写基础代码,基于数据结构操作。

一旦数据结构发生修改,必须就要修改操作的代码,

可重用性差。

可维护性差维护的成本高。

程序 =数据结构+算法

 

 

相对的优点

 

面向对象

分解数据

数据 和操作数据是一个整体

‘’数据修改 只涉及这对该数据的操作(封装)。

可复用性好(继承)

可维护性,维护的成本低

程序=对象+消息

 

 

 

 

万事万物皆对象,对象是由静态的属性和动态的方法来组成的。

类:一组具有相同属性和行为的对象的抽象。

 

消息:对象之间的通信和响应。

抽象:提取实物的本质 共性的属性和方法 忽略某些不必要的细节和个性的差异

类的组成 成员变量 和成员方法

封装

存在一个边界 边界之内的细节隐藏起来 只留下对外的接口(如 笔记本 手机 饮水机)

为什么使用封装 (1)易用 简单(2)安全(3)易维护

继承

允许后代直接使用先辈的所有属性和行为,

为什么使用继承  更好的实现了代码的重用

多态的体现

不同的对象,接收到相同的消息,产生的响应不同(如同人说一句话 不同的人 或者语气说出的意思 不相同  !抽象类的代码!)

总结 面向对象是 一种自然 朴素的方法 来源于生活。

重写 重载等;

引用:

Point p =new Point();的含义是首先实例化一个对象(new Point());然后定义一个引用,p指向这个实例,p=p1;并不是将实例p1赋值给实例P,而是改变了引用的关系。

构造函数

构造函数时在对象实例化是自动被系统调用,该函数名必须是独一无二的。对于一个类来说 是将类名作为函数名 。

构造函数 不需要程序员去定义返回值, 他是系统自动决定的 void 也不行。

赋值兼容:凡是需要父类对象的地方,都可以使用子类的对象来代替

Final 修饰的类不能被继承 final修饰的变量不能被修改(也就是常量)Final 修饰的方法

Static静态:静态代码块是在加载类的时候自动被执行 早于构造函数。静态的方法 面向的事整个类 不是某个对象 所以没有 this 并且只能使用类名来调用 不能使用实例化对象拿去调用

 

抽象类

为什么需要去使用抽象类?

在现实生活中,有些类我们明明知道是有某些方法,但是具体这些方法时怎么去做的好像又无法说清楚,比如手机、电报、固定电话等都是通讯工具,而通讯工具就应该具有想外发送消息的方法,但是取无法说明具体怎么发,而手机 、电报等我们又可以说清楚它们是怎么发送消息的。

由于抽象类包含有未实现的方法,所以抽象类是无法去实例化对象(new),name它的作用是什么呢,它可以对它的后代进行规划和约束,后代必须去按照它的要求去实现,但具体怎么实现由后代去决定。

抽象方法:只有声明 没有实现。 Abstract修饰抽象方法

抽象类:就是含有抽象方法的类

抽象类不能被实例化 也就是不能被new 它只能作为父类被继承,作用是:对后代进行规则,即凡是他的后代,必须实现它未实现的方法。

 

比如说,形状肯定有计算周长和面积的方法,但是具体如何计算的,却无法描述。三角形有三角形计算的 方法 圆有圆计算的方法  所以在形状这个类里面只能声明这个方法,但不能实现。

赋值兼容性规则:凡是需要使用父类(车)对象的地方,都可以使用其共有子类(三轮车)去代替。

接口

接口所以的方法都是抽象方法:所以在声明方法时,关键词abstract写不写都没有关系。

接口的定义关键词是interface 抽象类是class,抽象类是用来继承(extends)的,接口是用实现(implementes)的。

 

匿名内部类

为什么要使用匿名内部类?

先看看如果不使用匿名内部类的情形:

  1. 定义接口(Square)(如果已经有则跳过)public interface Square {     public String  getName();     public double area();   public double perimeter(); }
  2. 实现接口实现类Square

  1. 定义Square类对象并使用

 

那么如果使用匿名内部类呢?

  1. 定义接口(与上一种情形一样)
  2. 定义匿名内部类,并实现接口(实际上就是将上一种情形的第2、3步合并了)

匿名内部类显然简化了流程。但是也使得使用者理解更困难了,代码的层次不是太清晰了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值