Java基础学习笔记之三_面向对象
来源:互联网 发布:windows自带纸牌游戏 编辑:程序博客网 时间:2024/05/02 06:47
***面向对象笔记
***1.面向对象的相关理念
1)万物皆为对象。
2)每个对象都是唯一的,世界上没有完全相同的两片树叶,在JVM中,保证对象的唯一性的实现是在内存中分配唯一的地址。
3)对象具有属性和行为。
4)对象都属于某一个类,类是具有相同属性和行为的对象的集合。建立对象时,JVM将类载入内存,然后以其为模板进行对象的构建。
7)继承中,父类用Private修饰的属性和方法对子类的透明。
8)多态一个名称多种形态。比如:是指当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而A全然不知。
9)动态绑定是指JVM在运行时根据引用对象的不同绑定方法实现多态。
***2.创建对象
1)显示创建:
a.用new创建对象。
b.使用反射手段,即调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
c.调用对象的clone()方法。注意,这种方法不会调用类的构造函数
d.使用反序列化的方法。
2)隐式创建:
a.String str= "hello";这种属于String类型直接数对应一个String对象,引用一个String对象。若此时运行String str2=
"hello";则str和str1是同一个对象。
b.String中+的使用。
c.JVM加载一个类的时候,会隐含创建描述这个类的Class实例。
3)创建步骤:
a.给对象分配内存。
b.将对象的实例变量自动初始化为其变量类型的默认值。
c.初始化对象,给实例变量赋予正确的初始值。
2)对类的二进制数据进行验证
3)解析并执行指令
运行时数据区:
栈区——基本数据类型,局部变量(指向堆区),主方法的调用
堆区——存放具体对象信息,对象中的方法是一个指向方法区的引用
方法区——存放类的类型信息。类型信息包括#静态变量#和#方法#,而方法信息中包含类的所有方法的字节码。
例如:Doll beibei = new Doll("贝贝");
其中beibei在栈区,指向一个名字为“贝贝”的Doll实例(在堆区),而Doll实例含有的方法则指向方法区。
***1.面向对象的相关理念
1)万物皆为对象。
2)每个对象都是唯一的,世界上没有完全相同的两片树叶,在JVM中,保证对象的唯一性的实现是在内存中分配唯一的地址。
3)对象具有属性和行为。
4)对象都属于某一个类,类是具有相同属性和行为的对象的集合。建立对象时,JVM将类载入内存,然后以其为模板进行对象的构建。
5)接口是一个抽象的概念,指系统对外提供的所有服务,描述了系统能提供哪些服务,但是不包含服务的实现细节。
利用接口提高了子系统之间松耦合性。某个子系统内部的实现发生了改变,但是只要接口不变,就不会影响到主机子系统。在Java中,接口有两个意思:a.对象中表现为public类型的方法,在外可以被调用。b.用interface关键字定义的实实在在的接口,它用于明确地描述系统对外提供的所有服务。
6)面向对象编程对于封装的实现主要是通过访问控制机制来进行封装的,这种机制能控制对象的属性和方法的访问权限。封装的原则:a.把尽可能多的东西藏起来,对外提供简捷的接口。b.把所有属性藏起来,必要的设置和读取用getter和setter7)继承中,父类用Private修饰的属性和方法对子类的透明。
8)多态一个名称多种形态。比如:是指当系统A访问系统B的服务时,系统B可以通过多种实现方式来提供服务,而A全然不知。
9)动态绑定是指JVM在运行时根据引用对象的不同绑定方法实现多态。
***2.创建对象
1)显示创建:
a.用new创建对象。
b.使用反射手段,即调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
c.调用对象的clone()方法。注意,这种方法不会调用类的构造函数
d.使用反序列化的方法。
2)隐式创建:
a.String str= "hello";这种属于String类型直接数对应一个String对象,引用一个String对象。若此时运行String str2=
"hello";则str和str1是同一个对象。
b.String中+的使用。
c.JVM加载一个类的时候,会隐含创建描述这个类的Class实例。
3)创建步骤:
a.给对象分配内存。
b.将对象的实例变量自动初始化为其变量类型的默认值。
c.初始化对象,给实例变量赋予正确的初始值。
3.运行程序的步骤:
1)把.class文件中的二进制数据加载到内存中。2)对类的二进制数据进行验证
3)解析并执行指令
运行时数据区:
栈区——基本数据类型,局部变量(指向堆区),主方法的调用
堆区——存放具体对象信息,对象中的方法是一个指向方法区的引用
方法区——存放类的类型信息。类型信息包括#静态变量#和#方法#,而方法信息中包含类的所有方法的字节码。
例如:Doll beibei = new Doll("贝贝");
其中beibei在栈区,指向一个名字为“贝贝”的Doll实例(在堆区),而Doll实例含有的方法则指向方法区。
参考文章:
1.http://www.cnblogs.com/gnuhpc/category/347170.html
2.http://www.cnblogs.com/gnuhpc/archive/2013/01/04/2843742.html
3.http://www.cnblogs.com/gnuhpc/archive/2012/12/17/2822361.html
- Java基础学习笔记之三_面向对象
- Java基础学习笔记_面向对象1
- Java基础学习笔记_面向对象2
- 《面向对象基础:C++实现》学习笔记之三
- Java学习笔记(三、面向对象编程基础)
- Java4Android笔记之Java中的面向对象基础(三)
- java学习笔记(三)之面向对象
- 黑马程序员—Java基础学习笔记之面向对象
- 【黑马程序员】Java学习笔记之面向对象基础篇
- Java基础笔记之面向对象基础
- Java基础05天 学习笔记_面向对象(概念,封装,匿名对象,this关键字)
- Java基础之面向对象(三)
- Java基础之三:面向对象
- java基础之面向对象(三)
- 三.Java基础_面向对象(一)
- 五.Java基础_面向对象(三)
- java学习笔记-面向对象(三)
- java学习笔记-面向对象(三)
- 博客转移
- VC获取和修改代理设置源码
- [PHP]textarea 的值回车换行拆分至数组
- c语言常用头文件
- ios 面试题
- Java基础学习笔记之三_面向对象
- Bash 使用技巧大补贴
- NetStatusEvent info对象的状态或错误情况的属性
- IOS面试题详解
- 位操作基础篇之位操作全面总结
- Linux设置网络连通(经典版)
- 支付宝面试题
- MPEG2 TS小结(6)
- oracle中取最新的前几条记录(rownum)