JavaSE--面向对象
来源:互联网 发布:离线泰语翻译软件 编辑:程序博客网 时间:2024/04/26 10:22
面向过程和面向对象的理解 (个人理解)
当程序为了实现某些功能时,一一调用这些功能方法,这种实现方式可以称之为面向过程。而面向对象的出现是更符合人们思考习惯的思想,比如我们要打电话,会直接拿起手机并使用手机的语音通话功能,当想做PPT时,会打开电脑并使用电脑里的办公软件功能,即面向对象的思想是为了实现某种细节功能时,直接考虑使用能实现该功能的事物即可。面向过程中更多的体现的是执行者,而面向对象中更多的体现是指挥者,指挥对象做事情。
面向对象在需求中的应用重点是找到需求里的对象,而一般情况名词表示的大多数是对象,对对象的描述,就是明确对象具有的属性和方法。通过new方法可以创建该事物的具体对象,new创建的对象存储在堆内存空间中,实现某种需求是直接调用该对象所拥有的功能。
类及对象
Java中通过类来描述事物,属性和行为是该事物的成员,即在代码中的体现分别为变量和函数。对象是类创建的实例,通过该对象调用具有的属性和行为。例如机动车是一个类,私人轿车、起重机、警车等等属于机动车的具体对象,而实现某些功能是通过具体对象来完成的。
对类进行定义时,属性都私有化,并提供setXxx 和getXxx方法对其进行访问,可以在setXxx 方法中加入逻辑判断,但在实际项目中并不在setXxx 中加入逻辑判断,而是使用相关技术在赋值处进行逻辑判断。
成员变量和局部变量的区别:
1.定义的位置不同,成员变量定义在类中,局部变量定义在方法中以及语句里;2.内存中的位置不同,成员变量存储在堆内存的对象中,局部变量存储在栈内存的方法中;3. 生命周期不同,成员变量随着对象的出现而出现,随着对象的消失而消失,局部变量随着的方法的运行而出现,随着方法的弹栈而消失;4. 初始化不同,成员变量因为在堆内存中,所有默认初始化值,局部变量没有默认初始化值,必须初始化后才可以使用。
匿名对象
匿名对象是对象的简化形式,匿名对象两种使用情况:当对对象方法仅进行一次调用的时;匿名对象可以作为实际参数进行传递。
封装
封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式;面向对象三大特征:封装、基层、多态;函数和类都是封装的具体表现;
好处:1. 提高了代码的复用性;2. 隐藏了实现细节,还要对外提供可以访问的方式,便于调用者的使用;3. 提高了安全性。
构造函数
要在创建对象实例时就有了某些初始化的值,而使用到的便是构造函数这一方法。
自定义构造函数需满足的条件:没有返回值类型和具体的返回值,构造函数名称和类名一致;在不自定义构造函数的类编译时会有默认的构造函数,且其参数为空,如果定义了指定的对象初始化过程,默认的就不添加了。
注意:1. 一个类中可以有多个构造函数,它们的存在是以重载的形式体现的;2. 构造函数中也是有return语句的,用于结束初始化动作的;3. 构造函数是能被private修饰。
构造函数和一般函数的区别:1. 写法不同;2 . 运行上有差别,对象一创建就会调用对应的构造函数,一般方法是对象创建后,才会调用所需的一般函数;3. 构造函数在对象创建时,仅调用一次(初始化动作只做一次,而且先执行),而一般方法可以被对象调用多次。
this关键字在构造函数中的使用,this关键字是由于记录对象在堆中的地址,并通过this关键字来明确被初始化的对象,即对象调用了this关键字所在函数,this关键字就代表哪个对象;当构造函数内的成员变量和局部变量同名时,可以使用this关键字来标识成员变量;
Person(String name,int age){this.name = name;//this.name 表示成员变量,name表示构造函数的局部变量;this.age = age;}
静态变量
当同类对象具有某一共同的属性值时,不需要在堆中重复开辟该属性空间,可以使用类名调用显示该属性,则只需把该属性在类中定义为静态变量即可,这样就优化了内存,该相同的数据被对象共享。
静态关键字的特点:1.静态成员优先于对象存在,被对象共享; 2.静态成员可以直接类名调用,多一个调用方式;3.静态成员所属于类,所以它是随着类的加载而加载,随着类的消失而消失。
静态变量有两次初始化: 一次默认初始化,一次显示初始化。
静态变量和成员变量的区别:
- 所属范围不同
静态变量所属于类,成员变量所属对象;静态变量也称为:类变量;成员变量也称为实例变量; - 调用不同
静态变量可以被对象和类调用(一般都用类名调用);成员变量只能被对象调用; - 加载时期不同
静态变量随着类的加载而加载;成员变量随着对象的加载而加载; - 内存存储区域不同
静态变量存储在方法区中;成员变量存储在堆内存中;
静态方法
创建对象是为了产生实例,并进行数据的封装,当对象调用的方法不需要访问类中定义的成员变量(非静态)时,可以把该方法定义为静态方法,直接利用"类名.方法名"进行实现,这样就优化了内存空间。
静态是随着类的加载就加载了,也是随着类的消失而消失;静态优先于对象存在,被对象共享;因为静态先存在于内存中无法访问后来的对象的中的数据,所以静态无法访问非静态,即静态方法内部无法书写this、super关键字。
静态代码块
静态代码块的作用是给类进行初始化,随着类的加载而执行,且仅执行一次,也是在静态变量显示初始化以后在执行。
构造代码块
只要创建了对象就是调用构造代码块,其作用是给所有的对象进行初始化,不常见。
局部代码块
局部代码块是为了控制局部变量的生命周期,将局部变量及其调用放在局部代码块中,局部变量使用完后即释放。
设计模式
设计模式是对面向对象设计中反复出现的问题的解决方案,使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
单例模式可以保证一个类的对象的唯一性,其基本的实现方法是:1. 直接私有化构造函数,不让其他程序创建的对象初始化;2. 直接在本类中new一个本类对象;3.定义一个功能,其他程序可以通过这个功能获取到本类的对象。
//饿汉式class Single{//2,创建一个本类对象private static /*final*/ Single s = new Single();//1,私有化构造函数private Single(){}//3,定义一个方法返回这个对象public static Single getInstance(){return s;}}//懒汉式//单例的延迟加载方式,面试最多的是懒汉式。class Single2{private static Single2 s2 = null;private Single2(){}public static Single2 getInstance(){if(s2==null)s2 = new Single2();return s2;}}本系列为传智播客的JavaSE学习笔记及个人想法总结,版权归作者所有,欢迎转载学习,但需在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- javaSE-面向对象-简介
- javaSE-面向对象-继承
- javaSE-面向对象-接口
- javaSE-面向对象-多态
- javaSE-面向对象-Object
- javaSE-面向对象-异常
- javaSE-面向对象-包
- javaSE之面向对象
- JavaSE--面向对象
- JavaSE面向对象--QuickHit
- JavaSE面向对象-封装
- JavaSE学习--面向对象
- javase-面向对象
- javaSE:面向对象知识点
- JavaSE面向对象练习
- JAVASE之面向对象
- JavaSE面向对象关键字
- JAVASE----03----面向对象编程
- 黑马程序员——Java基础---多线程
- Problem 030——UVa 10815 - Andy's First Dictionary
- c++输出某日是某年那天
- POJ 2031 Building a Space Station(kuangbin带你飞 专题六:最小生成树)
- 【hibernate框架】核心开发接口-load和get方法
- JavaSE--面向对象
- ITOO---MVC3.0动态添加表格的行数并Controller中获取添加数据
- RDIFramework.NET ━ 9.16 案例模块━ Web部分
- 数据挖掘--聚类介绍
- FileStream类
- 【OpenCV】IplImage与Mat的相互转换
- 荣耀6Plus只要2065 这是开玩笑嘛?
- 1021. Deepest Root (25)
- Linux下Apache+Tomcat+JK实现负载均衡和群集的完整过程