《后台开发核心技术与应用实践》第二章:面向对象

2.1类与对象


一.类与对象

  1. 面向对象编程的主要思想:把构成问题的各个事物分解成各个对象;建立对象的目的是为了描述一个事物在解决问题中经过的步骤和行为

  2. 类:创建对象的模板(具有相同结构和特性的对象的抽象的集合)

  3. 对象:是类的实例,按照类的规则创建。(对象是程序的基本单元,将程序和数据封装在其中,提高代码的重用性、灵活性和扩展性)
    • 属性:是一个变量,用来描述一个对象的特征
    • 方法:是一个函数,用来表示对象的操作
    • 属性和方法统称为对象的成员

  4. 类是抽象的,不占用堆内存;对象是具体的,占用堆内存


二.成员函数

成员函数:属于类的成员,出现在类中。使用类的成员函数的时候,注意其权限和作用域

在这里插入图片描述

三.类的封装性

类的封装:是指一种将抽象性函式接口的实现细节(数据以及数据相关操作)部份包装、隐藏起来的方法。人们在使用时,往往不关心其具体实现,而只需知道调用哪个函数会得到什么接口。


封装:数据隐藏,提供访问接口

  • 数据隐藏:通过访问修饰符,限制访问权限实现

  • 提供访问接口:接口与实现分离

  • 接口与实现分离的好处:
    1.如果想要修改或者扩充类的功能,只需修改类中实现,类外部分不需修改
    2.如果发现类的成员数据出错,只需对类内部监查这些数据成员的成员函数即可。



四.构造函数

构造函数:主要处理数据成员的初始化,在建立对象时自动调用

  • 构造函数的名字必须与类名一致,以便编译器识别并把它作为构造函数处理
  • 无返回值
  • 可重载

补充:重载和重写的区别
https://blog.csdn.net/wintershii/article/details/80558739
①重载:同名方法不同参数。 编译时多态
②覆盖(也叫重写):子类继承父类并重写方法,参数相同,返回类型兼容。 运行时多态

使用默认参数构造器的好处:

  • 调用构造方法时,即使没有提供参数也不会出错
  • 对每一个对象有相同初始化方法Tips:
    在java中,如果声明了带参的构造函数而没有声明默认的构造函数,那么不可以使用默认进行构造;必须重新声明默认构造函数


五.析构函数

java中也有,但是不常用


六.静态数据成员

类的静态变量拥有一款单独的内存,所有类的对象共享这块内存,并可以通过这块共享内存进行通信
类的静态变量被所有对象共享,包括其子类

  • 类的静态数据成员在编译时被分配空间,到程序结束时释放空间(不随对象的生死而生死)
  • 静态数据成员可以通过对象名引用,也可以通过类名引用

类的静态变量存储在方法区(java8之后,取消了永久代的概念,取而代之的是“元空间”,永久代中的数据也进行了迁移,静态成员变量迁移到了堆中)

元数据与永久代的区别:https://blog.csdn.net/u011531613/article/details/62971713



七.静态成员函数

区别于静态数据成员,静态成员函数(static修饰的函数)不是为了对象之间的沟通而存在,是为了能处理静态数据成员。

静态成员函数和非静态成员函数的根本区别:
非静态成员函数有this指针(this指针指向对象的起始地址),而静态没有。
所以静态成员函数不能访问类中的非静态成员进行默认访问(即在引用时不使用对象名),只是不能默认访问。如果一定要使用,必须用对象名+“.”进行引用


八.对象的存储空间

java的对象存储空间计算 https://blog.csdn.net/wenniuwuren/article/details/50958892


一个Java对象到底占用多大内存?http://www.cnblogs.com/magialmoon/p/3757767.html



九.this指针

Java中关键字this指针只能用于方法内当一个对象被创建后,JVM就会给这个对象分配一个引用自身的指针,这个指针就是this。this只能在类中的非静态方法中使用,静态方法和静态代码块中不能出现this。this只和特定对象关联,不和类关联,所以同一个类的不同对象有不同的this
使用范围:

  • 在方法内使用成员变量的时
  • 将当前对象传递给其他方法时
  • 在构造器中调用构造器时

Java学习的随笔(一)对象概念、this指针、权限修饰符
http://www.cnblogs.com/kingatnuaa/p/4033550.html
Java this指针的使用 https://blog.csdn.net/victoryjack/article/details/51248475



十.类模板

C++中声明类模板:
template是必须写的关键字,意思是模板。T是类型参数名(类似于java中的泛型:参数化类型)在类模板名之后使用实际的类型名,这样在C++编译时,C++编译系统会用具体的类型替换模板中的类型参数T,这样就把类模板实际化了。
Java中java的泛型(Generics)仅仅存在于编译阶段,编译成的字节码文件事实上已经没有泛型了。

template<Class T>
class Operation{
	 public:
		 Operation (T a,T b):x(a),y(b){}
		 T add(){
			  return x+y;
		 }
		 T substract(){
			  return x-y;
		 }
	 private:
		  T x,y;
}

java中的模板类 https://blog.csdn.net/qq78442761/article/details/79030616
java泛型和C++类模板的区别 https://blog.csdn.net/a2211455/article/details/49818677
泛型擦除:https://www.cnblogs.com/doucheyard/p/6855823.html
泛型是类型擦除的:https://blog.csdn.net/hui_lang/article/details/7552564



十一:java中类初始化的顺序
在这里插入图片描述

在这里插入图片描述

java中类初始化的顺序说明:https://www.cnblogs.com/fly-piglet/p/8766226.html
Java类的初始化顺序 https://blog.csdn.net/xyajia/article/details/80922329





2.2继承和派生

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台开发核心技术应用实践 作者:徐晓鑫 著 出版日期:2016年08月06日 封面宣传语:腾讯云平台技术总监黄世飞、Facebook对外支付项目主程张子兴、微软软件工程师彭可竞、阿里巴巴资深算法工程师周乐、百度大数据高级测试工程师畅晋联袂推荐;围绕后台开发需要掌握的核心技术,从多个方面、多个角度进行了阐述,覆盖了该领域的几乎所有内容;充分抓住本质并结合实践,文字通俗易懂,可操作性强 出版书名:后台开发核心技术应用实践 作者:徐晓鑫 著 封底文字 专家评价 后台开发是一个“历史悠久”的领域,同时也是一个沉淀深厚,高技术价值的领域。本书清晰、严谨、务实的风格显示出晓鑫对该领域知识的深刻理解。 ——张子兴 Facebook对外支付项目主程,美国加州MenloPark 每一位从事后台开发的专业人士都需要一本后台开发指南。对每一位想要认真从事该领域工作的人来说,本书是一本绝对必读的书籍。 ——彭可竞 微软软件工程师,美国华盛顿州Redmond 本书是作者多年后台开发、架构和研究的精华。书中用通俗的文字、详尽的示例代码,结合实际工作中的案例,讲述了后台开发方方面面的知识,内容丰富。对于从事后台开发的人员,这是一本很好的由浅入深的学习书籍。 ——周乐 阿里巴巴资深算法工程师,北京望京 使用C++语言进行后台开发有一定的门槛,本书可以很好地帮助你跨过这个“门槛”。 ——畅晋 百度大数据高级测试工程师,北京上地 前勒口 互联网网民日益剧增,各种应用层出不穷,各项技术更新不断。单是游戏行业,近几年就经历了从端游、页游到手游的巨大变迁,客户端更新迭代之快,始料未及。而后台开发中使用到的技术,却变化不是很大。让服务性能更高、处理能力更强、安全性更好,是后台开发工程师永恒的主题。 后台开发中用到的技术,深而广,需要读的“大部头”很多,光是Richard Stevens的APUE,UNP,TCP/IP详解就够读个半年以上。读者通过阅读本书,可以从实践出发,快速由浅入深地进入后台开发领域。在读完本书,有了实践的经验之后,再去阅读大师们的著作,会更有体会,更懂得如何欣赏。 读书的最高境界莫过于“把书读薄,把书读厚”。本书文字通俗易懂,让你更快地“读薄”,同时又涉及较多的核心知识点,顺着这些知识点,读着读着也发觉“读厚”了。 后勒口 徐晓鑫,腾讯资深软件研发工程师,先后在腾讯游戏之洛克王国、QQ会员、QQ秀等项目工作,精通后台开发各种技术,实战经验丰富。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值