【总结】第六章 面向对象

news/2024/7/20 12:37:56 标签: java, 内存管理, c/c++

1. 面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。

2. 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。

3. 对于一个类来说,一般有三种常见的成员:属性field、方法method、构造器constructor。

4. 构造器也叫构造方法,用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造器的名称应与类的名称一致。

5.  Java引入了垃圾回收机制,令C++程序员最头疼的内存管理问题迎刃而解。Java程序员可将更多的精力放到业务逻辑上而不是内存管理工作,大大提高开发效率。

6. this的本质就是“创建好的对象的地址”! this不能用于static方法中。

7.  在类中,用static声明的成员变量为静态成员变量,也称为类变量。类变量的生命周期和类相同,在整个应用程序执行期间都有效。在static方法中不可直接访问非static的成员。

8.  Java方法中所有参数都是“值传递”,也就是“传递的是值的副本”。也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件改变不会影响原件。

9. 通过package实现对类的管理;如果我们要使用其他包的类,需要使用import导入,从而可以在本类中直接通过类名来调用。

--------------------------------------------------------------------------------------------------------

· 高级语言可分为:面向过程和面向对象两大类

      1. 面向过程与面向对象都是解决问题的思维方式,都是代码组织的方式。

      2. 解决简单问题可以使用面向过程。

      3. 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。

· 对象和类的关系是特殊到一般,具体到抽象的关系。

· 栈内存

      1. 每个线程私有,不能实现线程间的共享!

      2. 局部变量放置于栈中。

      3. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!

· 堆内存

      1. 放置new出来的对象!

      2. 堆是一个不连续的内存空间,分配灵活,速度慢!

· 方法区

      1. 被所有线程共享!

      2. 用来存放程序中永远是不变或唯一的内容(类代码信息、静态变量、字符串常量)。

· 属性用于定义该类或该类对象包含的数据或者说静态属性。属性作用范围是整个类体。Java使用默认的值对其初始化。

· 方法则用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽象。

· 构造器又叫做构造方法(constructor),用于构造该类的实例。Java通过new关键字来调用构造方法,从而返回该类的实例,是一种特殊的方法。

· 垃圾回收机制

      1. 程序员无权调用垃圾回收器。

      2. 程序员可以通过System.gc()通知垃圾回收器(Garbage Collection,简称GC)运行,但是Java规范并不能保证立刻运行。

      3. finalize方法,是Java提供给程序员用来释放对象或资源的方法,但是尽量少用。

· 方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。 调用时,会根据不同的参数表选择对应的方法。

· this关键字的作用

      1. 让类中的一个方法,访问该类的另一个方法或属性。

      2. 使用this关键字调用重载构造方法,可以避免相同的初始化代码,只能在构造方法中用,并且必须位于构造方法的第一句。

· static关键字

      1. 在类中,用static声明的成员变量为静态成员变量,也称为类变量。

      2. 用static声明的方法为静态方法。

      3. 可以通过对象引用或类名(不需要实例化)访问静态成员。

· package的作用

      1. 可以解决类之间的重名问题。

      2. 便于管理类:合适的类位于合适的包!

· impport的作用

      1. 通过import可以导入其他包下面的类,从而可以在本类中直接通过类名来调用。

· super关键字的作用

      1. super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。

· 面向对象的三大特征:继承、封装、多态。

· Object类是所有Java类的根基类。

· 访问权限控制符:范围由小到大分别是private、default、protected、public。

· 引用变量名 instanceof 类名 来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。

· final关键字可以修饰变量、修饰方法、修饰类。

· 抽象类是一种模版模式。抽象类为所有子类提供了一个通用模版,子类可以在这个模版基础上进行扩展,使用abstract修饰。

· 使用abstract修饰的方法为抽象方法必须被子类实现,除非子类也是抽象类。

· 使用interface声明接口

      1. 从接口的实现者角度看,接口定义了可以向外部提供的服务。

      2. 从接口的调用者角度看,接口定义了实现者能提供哪些服务。

· 内部类分为成员内部类、匿名内部类和局部内部类。

· String位于java.lang包中,Java程序默认导入java.lang包。

· 字符串的比较"=="与equals()方法的区别。

    “==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。

    Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认为id相同的人就是同一个人、学籍系统中认为学号相同的人就是同一个人。

    Object 的 equals 方法默认就是比较两个对象的hashcode,是同一个对象的引用时返回 true 否则返回 false。但是,我们可以根据我们自己的要求重写equals方法。

 

转载于:https://www.cnblogs.com/xiaozhejun/p/10252947.html


http://www.niftyadmin.cn/n/1116437.html

相关文章

通过sqli-labs学习SQL注入(3)

补充的一些知识点 Less-7解锁的文件读写注入。主要用到的函数和语句 load_file(fileName):读取服务器上指定路径的文件,需要有读取权限,文件路径可以转为16进制 LOAD DATA INFILE:load data infile /tmp/1.txt ignore into table test charac…

我的新车常备用品

提车也有一周的时间了,一直在某宝上淘一些常用的汽车用品,列个清单。 1. 脚垫 这个是4s店送的,算是必须品吧。对了,驾驶室一定要带卡扣的垫子,不然影响刹车加油操作。 比如这种,请忽略外观和颜色。我没有去我的车上拍&#xff…

Codeforces #400

目录 Codeforces #400Codeforces #400 Codeforces 776A A Serial Killer 链接:http://codeforces.com/problemset/problem/776/A 题意:刚开始有两个幸存者,每天会死一个人,新来一个人,输出每天存活人姓名 思路&#xf…

sscanf用法

头文件 #include 定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。 返回值 成功则返回参数数目…

登陆权限验证

<?php/** * [vlogin 验证登录] */function vlogin(){ if(empty($_SESSION[alogin])) //如果登录标识为空,表示未登录 { echo "<script>alert(请先登录!);window.location.hrefindex.php?m&clogin;</script>"; //提示并跳转页面 exit; }} /** * …

cenots 6.4 x64部署GNS3

centos 6.4 x64安装Gns3 yum -y install PyQt4 sip python qt qt-xllyum -y install PyQt4 sip python qt qt-xll telnet将文件设置成可执行文件&#xff1a;chmod x dynamips-0.2.8-RC3-community-x86_64.bin解压unzip GNS3-0.8.5-src.zip运行GNS3:python gns3.pyw设置Dynamip…

基于vue2.0+vuex+localStorage开发的本地记事本

本文采用vue2.0vuexlocalStoragesasswebpack&#xff0c;实现一个本地存储的记事本。兼容PC端和移动端。在线预览地址&#xff1a;DEMO github地址&#xff1a;https://github.com/lin-xin/notepad demo地址&#xff1a;http://blog.gdfengshuo.com/example/notepad/ 原文作者&…

树状数组使用总结

树状数组使用总结 在考试中 因为不清楚二维树状数组怎么用 而失手了无数遍了...今天终于把这个坑填了.... _ 1.区间修改单点查询(一维) 把查询第\(x\)个位置的值\(s_x\)变为查询前缀和\(s_x \sum_{i 1}^x d(i)\)。 其中 \(d(x) s_x - s_{x-1}\)。 修改\([L,R]\)的时侯&#…