Java基础总结--面向对象1
---面向对象的概念---
1.面向过程与面向对象的区别
面向过程:是一种思维习惯,解决一个问题的时候靠的是一个个方法调用--核心是动作
面向对象:是一种更接近生活中解决问题的思维习惯,解决特定的问题靠对象完成--核心是对象
eg:对于把大象装进冰箱分析
面向过程思维习惯
打开冰箱--装入冰箱--关闭冰箱(由3个动作实现)
面向对象的思维习惯
分析问题涉及的对象:大象 冰箱(打开 存储 关闭)
冰箱打开--冰箱存储大象--冰箱关闭
2.面向对象的特点
封装数据和方法在对象中
使得复杂问题简单化(面向多个函数--面向一个对象)
角色的转换:自己实现功能--调用对象的功能
注意:以后再给别人解释的时候先说特点,然后进行举例说明
3.面向对象解决问题的一般思路
--分析问题域涉及到哪些对象---名词一般就是可以是对象
注意:实体-现实存在的任何东西,具有属性和行为两方面内容
--分析需要的功能涉及到两方面
* 该功能已经被封装在对象中,直接调用对象功能
* 该功能没有被对象封装过,就自己创建对象封装该功能
注意:功能应该封装在合适的对象中(原则:放在最熟悉该功能的对象)
--不断维护对象之间的关系
----类与对象之间的关系----
eg;现实生活中生产汽车
某型号汽车图纸--生成具体的该型号的汽车
图纸--相当于是对汽车这类事物的描述
具体汽车--是事物描述的一个具体的产物
--Java中的类:用Java语言描述对某类事物的描述--通过类来体现
(属性-数值--成员变量,行为-功能--成员方法) 成员定义在类中
定义类本质就是--定义类
成员变量与局部变量区别
1.成员变量定义在类中,类中有效。局部变量定义在所属方法中,在方法中有效。
2.成员存在堆中对象中,局部变量存在栈中的方法中
3.成员变量随着对象存在,局部随着所属区域的存在而存在
4.成员变量默认初始化,局部变量没默认初始化值
注意:初始化是给对象的属性进行初始化
成员变量与局部变量重名:先在栈中找--再到堆中找
--Java中的对象:是某类的具体实例,通过new来创建对象
Car c = new Car();//创建一个对象
创建对象的过程:1.产出对象的引用 2.堆中创建对象(初始化-构造方法进栈) 3.对象的地址赋值给对象的引用
c.run(); c.color = "blue";//通过对象名调用对象的内容-- 对象.成员
对象.成员方法();方法就会进栈-执行完成--出栈
类一般分为:单纯的描述类 和 测试类(含有主函数,一般在该类中创建和调用对象的内容)--类的创建与类的使用分开
----面向对象的内存分配----
1.堆里面--存new出来对象(每个对象包含数据在堆中成员变量-默认初始化)
2.成员方法是该类所有对象共用,只有在调用的时候才会加载进栈内存
3.实体的出现--封装自己特有数据,
4.对象:封装某类事物的数据,数组:封装同一类型的数据
5.匿名对象:没有名字的对象 new Car(); 其实就是对象的简写方式 new Car().run();
  使用地方:1.只对对象进行一次使用,比如仅仅调用一次方法,匿名对象没有被指向,调用完成员变量后就变成垃圾,所以调用一次方法就可以简写 2.传递类类型参数就可以,因为有接收匿名对象的引用。
6.简化必须有好处也会有坏处
---对象的初始化---
1.默认初始化--自动初始化
2.直接显示初始化--类创建是直接给成员变量赋值
3.静态代码块初始化--用于初始化类(不含对象)
4.构造代码块--给所有对象进行通用的初始化
5.构造方法初始化---针对性的初始化
特点:函数名和类名相同,无返回值类型,也无返回值
作用及使用时机:在创建对象的时候被调用一次,用来初始化对象的成员变量
默认初始化:一般定义类时候,没有定义构造函数,JVM会自动添加一个无参数的构造函数,若本身存构造函数就不会添加,构造函数以重载的方式定义在类中,根据参数调相应的构造函数。和一般函数一样,调用完就释放内存。
---java的参数传递---按值传递
1.参数为基本数据类型--传递的是变量的值
2.参数为引用型--传递的是指向对象的地址
3.方法调用结束后会释放其所占的栈内存
----封装-----
1.定义隐藏对象的属性和实现细节对外提供公共的访问方式
2.优点:变化隔离、便于使用、代码重用、安全
3.原则:属性一般是私有private对外提供公共的set/get方法
4.访问修饰符:private只能修饰类的成员,只能在本类中直接访问
5.类中代码的书写顺序:成员变量 构造方法 成员方法
---this关键字----
1.定义:代表所在函数所属的对象的引用---代表本类对象
简单的说就是那个对象调用了this所在的函数,this就代表那个对象
构造方法是被对象调用,加载进内存时就持有其要初始化化对象的引用this = 该对象的地址
2.何时使用:当在函数中需要用到该函数对象时就可以用this
3.使用情况:
** 局部变量和成员变量重名,this用来区分成员变量和参数 this.name = name;当对象调用成员方法时候(假如要访问的对象数据)--此时也会持有this引用
** 可以在一个构造函数中调用另一个构造函数(必须放第一行)
---static关键字---静态的
1.用来修饰成员,修饰后的成员不在属于某个对象
2.被修饰后的成员具备以下的特点:
随着类的加载而加载,先于对象的存在
被所有对象共享,可以被对象使用也可直接用类名调用
3.什么时候应该定义静态成员
静态成员变量:该类的所有对象该属性值相同  共享该属性值-static只存储一份
静态成员方法:方法有没有访问对象的特有数据--是否依赖于对象的数据
如果不依赖对象,就将功能定义为静态
共享的数据--定义为静态--静态变量--一般由类名调用
特有的数据--定义为对象特有--成员变量(实例变量)
4.成员变量与静态变量的区别
两个变量的生命周期不同。成员变量和对象是一体,静态变量和类是一体的(生命周期长)
(类在内存中也是以对象的形式存储的)
调用方式不同:成员变量只能被对象调用;静态变量一般就用类名调用
存储地方不同:成员变量堆中对象;静态变量存储在方法区
5.注意事项
静态方法只能直接访问静态成员
非静态既可以访问静态也可以访问非静态
静态方法里面不可以使用this,super等代表某个对象引用的关键字 静态是共用的
主函数是静态的-作用就是创建对象,调用对象的内容
6.main函数的解释
格式是固定
被JVM所识别
main是函数名,被JVM识别的固定名字
主函数被调用才会执行
String[]args 主函数的参数列表--字符串数组//JVM传参数new String[0]
7.static成员加载的过程
测试类加载(静态非静态分开在方法区-代码存放区)-主函数栈中--其他函数栈中(运行区存储方法的局部变量)
8.静态代码块
static{} static此时是修饰符 满足静态一切特点,随类的加载而执行
同一个类一般只会被加载一次,只执行一次,用于给类初始化
有的类可能不需要创建对象
Java基础总结--面向对象1的更多相关文章
- Java基础-初识面向对象编程(Object-Oriented-Programming)
		
Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...
 - 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
		
---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...
 - Java基础之面向对象以及其他概念
		
一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平台,jvm不是跨平台的. JR ...
 - 【Java基础】面向对象下
		
面向对象下 这一章主要涉及其他关键字,包括 this.super.static.final.abstract.interface.package.import 等. static 在 Java 类中, ...
 - 【java基础】面向对象的三大基本特征之-------继承
		
面向对象的三大特征:封装,继承,多态 java通过extends关键字来实现继承,而且是单继承,一个子类只可以有一个直接父类,但是父类还可以有父类... java.long.Object是所有类的父类 ...
 - 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
		
---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...
 - 再探java基础——对面向对象的理解(1)
		
对象 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则.计划或事件.对象具有属性和行为,在程序设计中对象实现了数据和操作的结合,使数 ...
 - Java基础(6)- 面向对象解析
		
java面向对象 对象 知识点 java 的方法参数是按值调用,是参数的一份拷贝 封装 使用private将 属性值/方法 隐藏,外部只能调用 get,set方法/非private 的接口 获取 重载 ...
 - Java基础知识➣面向对象(八)
		
概述 Java和C#都是面向对象语言,面向对象编程是目前高级语言习惯的编程模式,与C++编写过程编程而言,面向对象使用起来高效.灵活:面向对象的三个特征:封装.继承和多态. Java面向对象 1.类封 ...
 
随机推荐
- 201521123119 《Java程序设计》第13周学习总结
			
1. 本周学习总结 Q以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 Q1. 网络基础 Q1.1 比较ping www.baidu.com与ping cec. ...
 - python2/python3 内存中打包/压缩文件
			
python2:(包含压缩选项,如果只打包,可以调整zipfile.ZIP_DEFLATED) import zipfile import StringIO class InMemoryZip(obj ...
 - Spring02-AOP
			
1,动态代理,指的是通过一个代理对象创建需要的业务对象,然后在这个代理对象中统一进行各种操作. 步骤: 1)写一个类实现InvocationHandler接口: 2)创建要代理的对象 2,创建一个简单 ...
 - eclipse设置背景保护色及常用设置
			
1.设置背景颜色 2.代码自动补全 Windows-->Preferences-->Java-->Editor-->Content Asist,在Auto activation ...
 - Linux SSH 安装Tomcat
			
tomcat的安装 1. 下载tomcat 从tomcat官网(http://tomcat.apache.org/download-70.cgi)下载tomcat的压缩包apache-tomcat-7 ...
 - 腾讯x5Webview取代原生android Webview
			
一.官方地址: https://x5.tencent.com/tbs/ 二.不需要申请开发者,QQ直接登录,下载即可集成到项目中. 三.与原生的webview对比优势 1) 速度快:相比系统webvi ...
 - uva 10391
			
这个题,单纯做出来有很多种方法,但是时间限制3000ms,因此被TL了不知道多少次,关键还是找对最优解决方法,代码附上: #include<bits/stdc++.h> using nam ...
 - Oculus Store游戏下载默认路径修改方法
			
最近在测试一款VR游戏,所以在硬件设备上选择了HTC Vive和Oculus两款眼镜.相对而言,HTC安装比较人性化:支持自定义安装路径,而且可在界面更改应用程序下载位置,如图所示: 这下替我节省了不 ...
 - ThinkPHP中:RBAC权限控制的实习步骤
			
使用版本ThinkPHP3.1.3 第一步,建表及数据 第二步,建关联模型 第三步,控制器使用关联模型.配置文件 第四步,模板显示数据 第一步,建表及数据 在数据库中,建立一个companysvn数据 ...
 - 记一次坑爹的RSA旅程____快哭了555555555(来自实验吧的warmup的wp和感想)
			
这么简单的题目搞了我那么久,森森感觉自己菜的不行....哎,努力吧少年,BXS已经全国第二了. 嗯,废话不说,这道题目来自实验吧的"warmup",附上链接 http://www. ...