Java面向对象编程篇1——类与对象

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(Open-Close 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 a=10;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){a=0;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));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中发送带附件的邮件,python SMTP实现发送带附件电子邮件

本文实例为大家分享了python SMTP发送带附件电子邮件的具体代码,供大家参考,具体内容如下可采用email模块发送电子邮件附件。发送一个未知MIME类型的文件附件其基本思路如下:1. 构造MIMEMultipart对象做为根容器2. 构造MIMEText对象做为邮件显…

Java面向对象编程篇2——面向对象三大特点

Java面向对象编程篇2——面向对象三大特点 1、封装 1.1、封装的概念 通常情况下可以在测试类给成员变量赋值一些合法但不合理的数值,无 论是编译阶段还是运行阶段都不会报错或者给出提示,此时与现实生活不符 为了避免上述错误的发生,就需…

易语言php支付宝,支付宝填表登录易语言源码

支付宝填表登录易语言源码MS_晨星天宇.版本 2.支持库 spec.支持库 HtmlView.程序集 窗口程序集_窗口1.子程序 _按钮1_被单击调试输出 (开始登录 (超文本浏览框1, “”, “”)).子程序 开始登录, 文本型.参数 超文本浏览框, 超文本浏览框.参数 账号, 文本型.参数 密码, 文本型.参…

mybatis常用jdbcType数据类型

1 MyBatis 通过包含的jdbcType类型 BIT FLOAT CHAR TIMESTAMP OTHER UNDEFINEDTINYINT REAL VARCHAR BINARY BLOB NVARCHARSMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHARIN…

oracle 查询所有组合,Oracle的组合条件查询

组合条件查询,以下两种方式都可以:select b.job_id,b.source,b.create_via,b.who_create,b.location_code,b.ref_nofrom (select rownum r, a.*from (select j.*, cj.location_code, cj.ref_nofrom nfs_gbl.combine_job j, nfs_gbl.combine_job_criteria…

Java面向对象编程篇3——接口与抽象类

Java面向对象编程篇3——接口与抽象类 1、接口(interface) 接口中可以含有变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译…

oracle sql语句 只读,Oracle_SQL语句

------------------------Oracle 的SQL 语法--------------------------第(1,2)章 结 合 语 句》1:创建表空间create tablespace 表空间名datafile存放文件的路径_空间名_.dbf size 30m;》2: 分配权限grant 权限| 角色 to 用户名》3: 创建用户create use…

Java面向对象编程篇4——内部类

Java面向对象编程篇4——内部类 1、内部类的概念 当一个类的定义出现在另外一个类的类体中时,那么这个类叫做内部类 (Inner),而这个内部类所在的类叫做外部类(Outer)。 类中的内容:成员变量、…

oracle中$的用法,关于expdp 中query用法小结

今天看到群里有人问到关于在使用expdp导出数据中使用query参数报错的解决方法,自己也出于好奇心瞎折腾了一把,现记录如下1.第一次尝试的时候[oracleDB ~]$ expdp scott/scott tablesemp1 dumpfileemp1.dmp logfileemp1.log queryemp1:"where rownum…

Java面向对象编程篇5——枚举

Java面向对象编程篇5——枚举 1、枚举的概念 在日常生活中这些事物的取值只有明确的几个固定值,此时描述这些事 物的所有值都可以一一列举出来,而这个列举出来的类型就叫做枚举类型 2、枚举的定义 使用public static final表示的常量描述较为繁琐&am…

Java面向对象编程篇6——注解与反射

Java面向对象编程篇6——注解与反射 1、注解概述 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制 Java 语言中的类、方法、变量、参数和包等都可以被标注。Java 标注可以通过反射获取标注内容。在编译器生成类文件时&…

oracle数据库支持2颗cpu,2.3 Oracle数据库中常见的性能问题

2.3 Oracle数据库中常见的性能问题这一节列出和描述了Oracle数据库中常见的性能问题。通过下面的Oracle性能调优方法,你应该可以避免这些问题,如果你遇到这些问题了,那么重复前面谈到的Oracle性能调优的步骤,或查阅适当的章节来解…

oracle fnd file.log,OracleEBSWIP模块DebugLog收集方法

How to generate WIP debug log files in ONLINE cases? For 11.5.10 and above, the WIP debug log files will be created ifHow to generate WIP debug log files in ONLINE cases?For 11.5.10 and above, the WIP debug log files will be created if1. FND: Debug Log F…

Java核心类库篇1——简介

Java核心类库篇1——简介 1、核心类库 包名主要功能java.applet提供了创建applet需要的所有类java.awt.*提供了创建用户界面以及绘制和管理图形、图像的类java.beans.*提供了开发Java Beans需要的所有类java.io.*提供了通过数据流、对象序列以及文件系统实现的系统输入、输出…

oracle更新blol字段超长,oracle - 将对象值插入表PL / SQL而无需指定属性 - 堆栈内存溢出...

我有以下架构DROP TABLE ALUMNO_ASIGNATURA;DROP TABLE ASIGNATURA;DROP TABLE TITULACION;DROP TABLE PROFESOR;DROP TABLE ALUMNO;DROP TABLE PERSONA;CREATE TABLE PERSONA( DNI VARCHAR2(9) CONSTRAINT PERSONA_PK PRIMARY KEY,NOMBRE VARCHAR2(20) CONSTRAINT PERSONA_NOM…

Java核心类库篇2——lang

Java核心类库篇2——lang 1、Object 该类是所有类的父类,每个类都使用它作为超类,没有任何属性 方法声明功能介绍Object()使用无参方式构造对象boolean equals(Object obj)用于判断调用对象是否与参数对象相等。 该方法默认比较两个对象的地址是否相等…

Java核心类库篇3——util

Java核心类库篇3——util 1、Date 用于描述特定的瞬间,也就是年月日时分秒,可以精确到毫秒 1.1、构造方法 方法声明功能介绍public Date()获取当前时间表示的date对象public Date(long date)根据给定的毫秒值创建date对象 public class Test {public…

linux怎么重装ssh服务器,Linux平台下安装SSH

什么是SSH?Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定;SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。传统的网络服务程序,如r…

Java核心类库篇4——集合

Java核心类库篇4——集合 1、集合的意义 记录单个数据内容时,则声明一个变量记录多个类型相同的数据内容时,声明一个一维数组记录多个类型不同的数据内容时,则创建一个对象记录多个类型相同的对象数据时,创建一个对象数组记录多…

计划任务文件 linux,Linux之任务计划

一、单次任务计划二、周期性任务计划一、单次任务计划命令:batch:系统空闲时自动执行,不常用at:可以使用相对时间、绝对时间或模糊时间,例如相对时间:at now3min,表示3分钟后执行绝对时间&#…