广州市官网网站建设怎么样,文化建设的成就,旅游网站的建设,软件开发公司哪里好Java面向对象编程篇1——类与对象
1、面向过程
1.1、概念
面向过程就是分析出解决问题所需要的步骤#xff0c;然后用函数把这些步骤一步一步实现#xff0c;使用的时候一个一个依次调用就可以了
1.2、优缺点
优点#xff1a;性能比面向对象高#xff0c;因为类调用时…Java面向对象编程篇1——类与对象
1、面向过程
1.1、概念
面向过程就是分析出解决问题所需要的步骤然后用函数把这些步骤一步一步实现使用的时候一个一个依次调用就可以了
1.2、优缺点
优点性能比面向对象高因为类调用时需要实例化开销比较大比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发性能是最重要的因素。 缺点没有面向对象易维护、易复用、易扩展
2、面向对象
2.1、概念
面向对象是把构成问题事务分解成各个对象建立对象的目的不是为了完成一个步骤而是为了描叙某个事物在整个解决问题的步骤中的行为
2.2、优缺点
优点易维护、易复用、易扩展由于面向对象有封装、继承、多态性的特性可以设计出低耦合的系统使系统 更加灵活、更加易于维护 缺点性能比面向过程低
2.3、面向对象三大特点
封装
把客观事物封装成抽象的类并且类可以把自己的数据和方法只让可信的类或者对象操作对不可信的进行信息隐藏。封装是面向对象的特征之一是对象和类概念的主要特性。 简单的说一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部某些代码或某些数据可以是私有的不能被外界访问。通过这种方式对象对内部数据提供了不同级别的保护以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
继承
可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力它可以使用现有类的所有功能并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”被继承的类称为“基类”、“父类”或“超类”。继承的过程就是从一般到特殊的过程。要实现继承可以通过“继承”Inheritance和“组合”Composition来实现。继承概念的实现方式有二类实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力
多态
指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着虽然针对不同对象的具体操作不同但通过一个公共的类它们那些操作可以通过相同的方式予以调用。
2.4、面向对象五大原则
单一职责原则SRP(Single Responsibility Principle)
是指一个类的功能要单一不能包罗万象。如同一个人一样分配的工作不能太多否则一天到晚虽然忙忙碌碌的但效率却高不起来。
开放封闭原则OCP(OpenClose Principle)
一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如一个网络模块原来只服务端功能而现在要加入客户端功能 那么应当在不用修改服务端功能代码的前提下就能够增加客户端功能的实现代码这要求在设计之初就应当将服务端和客户端分开公共部分抽象出来。
里氏替换原则(the Liskov Substitution Principle LSP)
子类应当可以替换父类并出现在父类能够出现的任何地方。比如公司搞年度晚会所有员工可以参加抽奖那么不管是老员工还是新员工 也不管是总部员工还是外派员工都应当可以参加抽奖否则这公司就不和谐了。
依赖倒置原则(the Dependency Inversion Principle DIP)
具体依赖抽象上层依赖下层。假设B是较A低的模块但B需要使用到A的功能这个时候B不应当直接使用A中的具体类 而应当由B定义一抽象接口并由A来实现这个抽象接口B只使用这个抽象接口这样就达到了依赖倒置的目的B也解除了对A的依赖反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块假如B也直接依赖A的实现那么就可能造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件而编译B时同样要直接包含到A的cpp文件。
接口分离原则(the Interface Segregation Principle ISP)
模块间要通过抽象接口隔离开而不是通过具体的类强耦合起来。
3、类与对象的关系
对象主要指现实生活中客观存在的实体在Java语言中对象体现为内存空 间中的一块存储区域类简单来就是“分类” 是对具有相同特征和行为的多个对象共性的抽象描 述在Java语言中体现为一种引用数据类型里面包含了描述特征/属性 的成员变量以及描述行为的成员方法类是用于构建对象的模板对象的数据结构由定义它的类来决定
4、类的定义
class 类名 {类体;
} 5、成员变量
class 类名 {数据类型 成员变量名 初始值;
}6、成员方法
class 类名 {返回值类型 成员方法名(形参列表) {成员方法体;}
}返回值类型
可以是基本类型也可以是引用类型
实参
调用方法传递的是实参
可以是直接量、变量、表达式、方法的调用等
形参列表
方法定义的为形参
对于基本数据类型而言形参对实参没有影响对于引用数据类型而言形参对实参有影响
public class Test2 {public static void main(String[] args) {int a10;int b[]new int[]{10,20,30,25,80,5,1};Test2 test2 new Test2();test2.test(a,b);System.out.println(a);System.out.println(Arrays.toString(b));}public void test(int a, int[] b){a0;b[1]1000;}
}可变参数
import java.util.Arrays;public class Test3 {public static void main(String[] args) {args(hello,world,i am,ruoye);}public static void args(String type,String... args){System.out.println(type);System.out.println(Arrays.toString(args));}
}