对java面向对象的初识
我其实一直想写点东西练练自己文笔,今天写下这篇技术类型的文章也没有一个好的格式和章法,但万事开头难,那么就从面向对象开始.
我们大部分人都知道互联网软件的存在,时刻影响了我们的现实生活,那么面向对象的编程思想就是从生活中来的,软件出现的目的就是为了描述现实世界,从而解决现实生活所需,究其一点:人的思想上刻画了现实世界,用编程语言来实现,而面向对象是最符合人的思考方式的。世界各样的事物靠分类来区别开来,有实例对象来行事特例行为,程序通过也同过类与对象来一一描叙清楚
开始来谈谈面向对象里常带有的概念:类{属性/方法},对象,初始化代码块,权限修饰符;特征(继承,多态,封装);其他涉及到(抽象,接口,单例模式.....其实这也是3大特征有关),这里面的思想贯穿整个java 的编程语言,理解起来还有靠后期慢慢在实践中领悟了。
一:类与对象
(1)类的加载顺序:程序代码在任何时候都有一个执行顺序,一个java文件从被加载到被卸载这个生命过程,总共要经历5个阶段,JVM将类加载过程分为:1
加载->链接(验证+准备+解析)->初始化(使用前的准备)->使用->卸载。但我们必须知道的是静态代码执行初始化顺序依次是:(静态变量、静态初始化块)–>(变量、初始化块)–> 构造器;如果有父类,则顺序是:父类static方法 –> 子类static方法 –> 父类构造方法- -> 子类构造方法。
(2)属性:概念主要有两个:成员变量(有的把static修饰的变量也叫成员变量,但我一般把这里的变量成为全局变量,因为他的属性数据的共享时间与共享范围和类一起,就是牛)与局部变量。从实际出发去考虑这两个存在的价值,例如:一个人带有属性有:身高,年龄,性别等自身天生就有;而他在一次去参加篮球比赛是领了球衣11号,因此,在这次运动中他获得了新的属性值,该属性值也会随着球赛的结束而消失。前者就可以定义成为成员变量,后者球号就可以只定义在打篮球时才有的属性,打篮球的功能行为可以写成此类的实例方法,当他在想打篮球是又可以领11号球衣完成行为方法。一个例子解释了成员变量,局部变量,和实例方法。由于使用的范围不一样,成员变量发在内存堆里(等类加载完了之后才算完),局部变量放在内存栈里(方法一结束就把里面的局部变量全清空,不用等类加载完)。
(3)方法:上面的内容已经解释了一种,还有补充。类方法(static修饰的方法,与类的静态属性一起同时加载,由于加载时间比实例方法早而且一直跟类一起存在,出现两种调用情况:【a】后来被调用的实例方法可以写静态方法,类方法里不能直接使用类方法,理由是已经加载还么有完不能再次被类加载,只能被调用。【b】在静态方法中只能通过new对象的方式去调用其他的类方法,我想的是这个对象引用无需加载执行任何一处的功能);介绍到了对象就可以介绍构造方法了。
(4)构造器:当创建一个无参对象时,类里都会有一个无参默认构造方法,一定要注意当new对象时不光是自己定义一个有参的构造方法,还应该把默认构造方法手动添加上去。作用:①创建对象 ②给创建的对象的属性赋值(类对象的属性赋值的先后顺序:①属性的默认初始化 ②属性的显式初始化③通过构造器给属性初始化④通过"对象.方法"的方式给属性赋值;赋值可以有四种,但类外用创建对象时给他赋值又方便又效率)
二:三大特性
(1)封装:概念很少,一句话:属性藏起来,公共方法提供其访问(开发时,记住,属性是用于存储数据的,直接被访问,容易出现安全隐患,所以,类中的属性通常被私有化,并对外提供公共的访问方法。/私有仅仅是封装的⼀一种体现形式而已)。总体好处:将变化隔离;便于使⽤用;提⾼高重用性;安全性。
封装以多种形式实现代码的复用:
a.数组⽤用于封装数据,就是⼀一个具体的实体;
b.啥事实体的问题,就是用于封装多个数据的
c.啥是对象?对象是将函数等一些内容进⾏行了封装。
d.多程序读取⼀一个配置⽂文件时,建议配置⽂文件封装成对象。
e.内部类之所以定义在内部就是为了封装。想要获取内部类对象通常都通过外部类的⽅方法来获取。这样可以对内部类对象进行控制。
f.异常就是 java 按照⾯面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处理问题。
g.包是⼀一种封装形式,⽤用于封装类,想要被包以外的程序访问,该类必须 public.
h.对字符串进行了对象的封装。这样的好处是可以对字符串这种常⻅见数据进行⽅方便的操作。对象封装后,可以定义 N 多属性和行为。
i.基本数据类型对象包装类:是按照⾯面向对象思想将基本数据类型封装成了对象。好处:1:可以通过对象中的属性和行为操作基本数据。2:可以实现基本数据类型和字符串之间的转换
j.DateFormat df = new SimpleDateFormat(); 该对象的建⽴立内部会封装⼀一个默认的⽇日期格式。11-12-1 下午1:48
k.因为字符每个国家都不⼀一样,所以涉及到了字符编码问题,那么 GBK 编码的中⽂文⽤用unicode 编码解析是有问题的,所以需要获取中⽂文字节数据的同时+ 指定的编码表才可以解析正确数据。为了方便于文字的解析,所以将字节流和编码表封装成对象,这个对象就是字符流。只要操作字符数据,优先考虑使用字符流体系。
l.反射技术: 其实就是动态加载⼀一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码⽂文件中的内容都封装成对象。
我已经列举了很多,值得注意的是23种设计模式的思想会有很多会用封装的思想,自己也可以为自己的项目写一些封装代码重复用免得重复写浪费时间。贴切的说一个例子,没有封装就是人自己动手搬每一块砖,有了之后可以自己创出能扮砖的容器,一次用完了下次可以继续使用它去完成同样的事,又称封装的工具。
隐藏:权限修饰符(public private protect 缺省;package /import都会用到)
(2)继承:单继承与多接口实现的完美配合使得我们在编写程序时更灵活,为了扩展实现功能有了子承接父页的继承(extends)关系,有了血缘关系就会有高耦合的弊病,最后用了接口,发现开发中接口的解耦的能力还不够,希望能分成独立的模块去完成但他们之间彼此还是有联系的高内聚不能减少,到现在我和同事就用spring框架去完成项目,效率提高了还很少有代码的牵扯。
回来继续说,1.抽象类(abstract)被继承也能被创建对象,注意至少有一个是非私有的抽象方法,还可以使用main方法。通常是被继承又子类去实现了。2.接口(interface)只能定义抽象方法和常量,实现它的子类必须实现它的所有的方法,扩展性是多样的比单继承好,一般优先考虑。
(3)多态:体现:父类引用或者接口的引用指向了自己的子类对象。//Animal a = new Cat()。多态的弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问⼦类中特有的方法。(前期不能使用后期产生的功能,即访问的局限性)。多态是在思想上的改变:以前一个对象只能指挥一个对象去工作,现在可以一个引用可以去调用多个对象的方法使用。
每次都很想把博文写得更完善些,更能有所得,但学习可能眼界得局限性,所以希望大家能指出我的不足之处。
对java面向对象的初识的更多相关文章
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
- 八、Java面向对象编程
Java面向对象 初识面向对象 面向过程 & 面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二部做什么... 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式 ...
- JAVA面向对象
JAVA面向对象 对象 我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象 只要是对象--属性和行为(方法) 属性 对象有什么 例如:学生有姓名.学 ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
随机推荐
- 读书笔记 effective c++ Item 32 确保public继承建立“is-a”模型
1. 何为public继承的”is-a”关系 在C++面向对象准则中最重要的准则是:public继承意味着“is-a”.记住这个准则. 如果你实现一个类D(derived)public继承自类B(ba ...
- java-信息安全(七)-基于非对称加密,对称加密等理解HTTPS
概述 java-信息安全(一)-BASE64,MD5,SHA,HMAC java-信息安全(二)-对称加密算法DES,3DES,AES,Blowfish,RC2,RC4 java-信息安全(四)-数据 ...
- 小故事理解TCP/IP连接时的三次握手
在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接,示意图如下: 下面通过一个小故事简单理解一下这三次握手的具体含义: 一天,快递员小客(客户端)准备去小服(服务器)家去送快递(准备与服务 ...
- Octave Tutorial(《Machine Learning》)之第五课《控制语句和方程及向量化》
第五课 控制语句和方程 For,while,if statements and functions (1)For loop v=zeros(10,1) %initial vectors for i=1 ...
- Office 365开发概述及生态环境介绍(二)
本文于2017年3月19日首发于LinkedIn,原文链接在这里 在上一篇 文章,我给大家回顾了Office发展过来的一些主要的版本(XP,2003,2007,2013等),以及在Office客户端中 ...
- _1_html_
创:18_3_2017修:20_3_2017什么是html? 超文本标记语言 告诉浏览器内容的语义,html中包含了各种标签html页面的框架是什么? <!DOCTYPE html> #D ...
- JavaEE开发之Spring中的依赖注入与AOP
上篇博客我们系统的聊了<JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建>,并在之前的博客中我们聊了依赖注入的相关东西,并且使用Objective-C的R ...
- Unity 3D Framework Designing(2)——使用中介者模式解耦ViewModel之间通信
当你开发一个客户端应用程序的时候,往往一个单页会包含很多子模块,在不同的平台下,这些子模块又被叫成子View(视图),或者子Component(组件).越是复杂的页面,被切割出来的子模块就越多,子模块 ...
- MyBatis快速入门(1):搭建环境和单表映射
一.MyBatis简介 一说起对象关系映射框架,大家第一时间想到的肯定是Hibernate.Hibernate作为一个著名的框架,功能十分强大.我们只需要配置好实体类和数据表之间的关系,Hibe ...
- ng自定义服务(利用factory)
ng中我们可以自己定义自己的服务,服务中是一些使用重复率较高的方法.因此有效的使用服务可以提高开发速度. ng中定义服务的方法有多种,service,factory,provide,在此我只介绍最长用 ...