面向对象
简介:基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、 刻画客观世界和设计、构建相应的软件系统;
基本思想:把组件的实现和接口分开,并且让组件具有多态性
核心思想:封装、继承、多态
优点
重用性:对象可以在不同的程序里面重用
可维护性: 对象可以进行分别维护, 这样就使查找问题和修复问题变得简单了
模块性: 每一个对象都来源于一个单独的实体, 它内部的工作与系统的其他部分是分离的
简单性: 因为面向对象语言里面的对象都是反映的真实世界的对象,所以复杂性就降低了而且程序结构也更加清晰;
可扩展性:在面向对象程序里面,添加新的功能只需要引入新的对象或者修改一下现存的对象。
易修改性: 在面向对象程序中对数据表现层和工作过程进行小的改动是非常简单的, 类内部的改动不会影响程序的其他部分,因为外边的程序与这个类的交互是通过一个公开的接口方法进行的。只要这个方法不改动就不会影响交互。
缺点
继承是侵入性的只要继承,就必须拥有父类的所有属性和方法;
降低代码的灵活性子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束;
增强了耦合性当父类的常量、变量和方法被修改时,需要考虑子类的修改,而且在 缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大段的代码需要重构。
什么是类和对象?
类(class):Java代码的基本组织模块,使用来描述一组具有共同属性和行为对象的基本原型。是对这组对象的概括、归纳和描述表达。
类是对象的模板,它定义了本类对象的所拥有的属性集和行为集,是对一组具有相同属性和相同方法的对象的定义
对象(Object):是一个应用系统中的用来描述客观事物的实体,是有特定属性和行为(方法)的基本运行单位。
是类的一个特殊状态下的实例。对象可以是一个实体、一个名词、一个可以想象为有自己标识的任何东西
二者的关系
一个班级就是一个类,而班级中的每一个学生都是一个对象(个人见解)
三大特性
封装
封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。让抽象的事物保护自身的状态,防止非其他事物对其进行错误的状态改变操作。属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。
(我们只需要怎么去使用,不需要去考虑怎么实现的。我们使用手机却不需要知道手机怎么做出来的!)
继承
一个类继承另一个类,则称继承的类为子类,被继承的类为父类;
继承后子类自动拥有了父类的属性和方法,但是,父类的私有属性和构造方法并不能被继承。
子类除了拥有从父类继承过来的属性和方法外,子类还可以拥有属于自己的属性和方法
多态
以封装和继承为基础的
相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。
多态的表现形式有:方法重写,方法重载,接口和接口的继承,类和类的继承