这篇文章是阅读完了thinking in java的第一章做的非总结性的总结随笔. 希望对某些人有所帮助.
首先有必要说一个本人的背景,本人是一只非计算机专业出身,在计算机行业苦逼了2年的苦逼程序猿,弱势群体?
Thinking in java这本书我压根就没想过会看它, 纳尼? 太特么厚了... 不知道那天怎么的心血来潮的就翻了翻,就不小心翻了一章.
看完我就想尽量写点什么,通俗易懂的,省着时间长了,自己很多东西忘了,还能找点东西看看. 为什么不翻书看? 答曰:老外那语法实在不敢恭维啊!(可能是翻译的事,大牛建议看English版).
好了,闲话不多说了,Let's go!
第一章建议新手最好还是别看了, 当然了作者也是这么建议的(那你还写在第一章). 不过可以看看第一章最后的总结,里面说的一句话我感觉还是挺坦诚的.大体意思就是 "选好你自己的路(深思熟虑),再去选择语言,没有必要非得去学习java" , 中国的一句老话"谋而后动" 就是这个道理.
记得千万要深思熟虑. 本人就是因为干了一年java,右"转行"做了一年前端,导致薪水一直止步不前.
------ 正文传送门 -----
1. 抽象过程
抽象在某种意义上讲就是"想象"(当然要合理). 从 "抽象"<---->"具体" 就产生里面向对象语言了. 举个例子来说:
'A&V女U' < --- > '苍老师' (这就是一个抽象到具体的概念了.)
而什么是对象呢? 当然了,不是你女/男朋友, '苍老师'就是对象,就是所谓的'具体'.
而什么是类呢? 必须就是 'A&V女U'....
所以,对男同胞而言, 我们喜欢的是'类'(包括好多个对象,对象多了多好啊! 你懂得.);
类是封装性的表现,对象是封装性的具体实现!
2. 聊一聊关于类即Class吧!
我以前一直有一个困扰. Class 为什么是数据类型?
以前我总是想,类,类,里面有好多属性,好多方法,属性有int 类型,String 类型, boolean 类型. 这么多类型,那怎么Class还是数据类型呢? 现在我懂了,都是骗子,想类的时候,什么都不要想,我就问你,int b = 1, 说明的b 是int 类型. boolean flag = false,说明flag是boolean类型. 那Class cl,不就说明cl是Class类型的吗. 那Class不是数据类型是什么.千万别被类里面的乱七八糟的东西干扰了.
3. 每个对象都提供服务
我感觉这个问题再好理解不过了. '苍老师'不就为广大的宅男同志提供服务嘛,所以说对象肯定是为我们服务的,所以,你需要什么样的服务,就是创建什么样的对象,当然了,首先你得确保你找到了正确的类(你不能找 '程序猿类' ---> '苍老师' 吧!)
4. 说说可视范围吧
public(都能访问到) > propected(继承关系 可访问) > default(本包 可以访) > private(谁也访问不到) .
通常新手都喜欢用public ,编译不容易出错嘛! 不过切记,要根据具体的需求去用, 编译报错你还可以去modify ,运行时出问题,你就傻眼了.
5. 封装 继承 多态
封装上面已经提了,这里就不说了.继承和多态是老生常谈的问题了. 因为本人也不敢说完全理解了继承和多态.所以从新人的角度分析分析.
曾经有一次面试,有这么一个问题, 让我说说类和接口的区别? 我当时回答的乱78遭的引来了面试官的强烈BS!
先说说我此时的想法吧! 先说说抽象的东西吧!
(1) 类提供的是服务(对象嘛! 还记得不!) 接口提供的是一组标准.(一组当然就是相关的东西了)
(2) 一个类只能继承一个类,却可是实现多个接口.
(3)类中的服务(方法)是实现的(当然也可以不实现,加abstract去修饰方法,这种情况的类 叫做抽象类),接口中的方法一定不能实现(当然 如何你用Eclipse IDE的话,是会提示编译错误的).
当然了,以上都是写书面的东西,不知道为什么面试者就爱问这些东西.
说说工作中的体会吧. 继承一般是用来"建模"的. 什么是建模?
建模就是建立类与类之间关系的, 也就是几个类之间的继承关系.建模好坏直接影响你的编码水平,有时候我就感觉,建模更像是设计.不是你写了个extends,扩展了一些东西就OK的.有时候更需要一些经验的.说实在的,我现在用到继承很少,其一是公司的系统建模架构师基本都搭建好了,你只要添加逻辑就OK,另一方面也许是自己的功力还不到家吧!
如图就是一组建立好的模型,一层一层的.看着多清晰啊.
说的可能有点严重了,其实大可不怕,不能在工作中用,我自己练手还不行吗,继承随便用,多用用就知道怎么设计更好了. 不过所说的多用,不是说不经大脑的就乱用,要思考,总结,不然永远只是个猿崽子.
继承就说道这吧, 当然了,多态也建立在继承的基础之上的.
编程的时候,经常想把一个对象不当它所属的特定类型来对待,而是将其当做基类的对象来对待. 这句是书上原话 .
什么意思呢.我写一段代码阐述一下吧!
public class PolymorphismTest {
public static void main(String[] args) {
Bird bird = new SpringCuckoo();
callFly(bird);
}
public static void callFly(Bird whickBird/*就写了Bird 就是所谓的基类*/) {
whickBird.fly();
}
}
/**
*SpringCuckoo 春娟 ,杜鹃的一种
*
*/
class SpringCuckoo extends Cuckoo{
public void fly() {
System.out.println("*** Spring Cuckoo **** 正在飞....");
}
}
/**
*Cuckoo 是布谷鸟就是杜鹃
*
*/
class Cuckoo extends Bird {
public void fly() {
System.out.println("22222222222");
}
}
/**
*Bird是鸟
*
*/
class Bird {
public void fly() {
System.out.println("111111111111111");
}
}
首先看一下他们之间的层次关系吧! 如下图.
一般我就是这么用多态的... 就是参数直接写成父类的. 然后其实new的时候是子类的,就可以调用子类的方法了.可能理解的不透彻,希望大牛们能帮着指点一下.
6.关于创建对象中的内存体现
java中new对象是动态的,什么是动态的呢? 就是对象是在程序运行时才知道创建哪些对象,然后开辟相应的内存空间存放这些对象(这些都是在内存里的heap中完成的,heap),而像C++ 是在程序编译的时候就知道要创建哪些类,然后可能是在内存中穿件了一个类似于表似的东西记录下来(存放在内存的Stack区),然后在运行的时候在开辟出相应的空间.我个人是这么理解的.
C++: 1. 记录对象表(编译时) 2. 开辟空间(运行时)
Java: 1. 记录对象表 ,开辟空间(运行时)
从以上可以看出 在运行阶段 Java要比C++多干一件事, 所以要比C++慢一些(当然是对计算机来说). 不过对于现在越来越宽裕的内存来说,我不知道这种差异到底有多大.
希望写的东西能给大家一些启发,也欢迎大家指出我的错误.
分享到:
相关推荐
《Thinking in Java》是Bruce Eckel的经典之作,第四版(TIJ4)更是Java程序员必读的书籍之一。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程等众多主题。源码是...
《Thinking in Java》是Bruce Eckel的经典之作,被誉为学习Java编程的权威指南。该书以其深入浅出的方式,详尽地介绍了Java语言的核心概念和技术。第三版是此书的一个重要里程碑,它涵盖了Java语言的诸多关键特性,...
《Thinking in Java》是Bruce Eckel的经典之作,第四版涵盖了Java编程语言的广泛主题,适合初学者和有经验的程序员。这本书深入浅出地讲解了Java的核心概念和技术,旨在帮助读者建立坚实的编程基础,并理解面向对象...
《Thinking in Java》第二版是Bruce Eckel所著的一本权威性的Java编程教程,由MindView, Inc.出版。这本书受到了读者的高度评价,被认为是比其他Java书籍更出色的学习资源,其深度、完整性和精确性都是同类书籍中的...
《Thinking in Java》是 Bruce Eckel 编著的一本经典的Java编程教材,它深受程序员喜爱,被誉为学习Java的必备参考书。这本书全面深入地探讨了Java语言的核心概念和技术,不仅适合初学者,也对有经验的程序员提供了...
《Thinking in Java》是一本备受推崇的Java编程教材,由Bruce Eckel撰写,被誉为Java学习者的必读之作。这本书深入浅出地介绍了Java语言的核心概念和技术,覆盖了从基础到高级的主题,对于有一定Java基础的读者来说...
《Thinking in Java》是Bruce Eckel的经典之作,第四版更是被广大Java开发者视为学习和进阶的重要参考书籍。这本书深入浅出地介绍了Java语言的核心概念和技术,包括面向对象编程、集合框架、多线程、网络编程、GUI...
《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书以其详尽的解释、丰富的示例和实践性强的习题深受程序员喜爱。"Thinking in Java 习题答案"是配套的解答集,...
《Thinking in Java》是Bruce Eckel的经典Java编程书籍,它深入浅出地讲解了Java语言的核心概念和技术。这本书不仅适合初学者,也对有经验的程序员提供了深入理解Java的宝贵资源。现在,我们有机会免费下载这本书的...
《Thinking in Java》是Bruce Eckel的经典Java编程教材,它以其深入浅出的讲解和全面系统的内容深受程序员喜爱。这本书的Annotated Solution Guide是作者为读者提供的配套解答指南,帮助读者理解和解决书中练习题,...
《Thinking in Java》第四版英文版是一本广受Java程序员欢迎的学习材料,它被推荐给每一个想要深入理解Java编程语言的读者。本书由Bruce Eckel撰写,他是MindView公司(专注于计算机教育和咨询)的总裁。本书被许多...
《Thinking in Java》是Bruce Eckel的经典之作,它被誉为学习Java编程的最佳教材之一。这本书以其深入浅出的讲解方式和全面覆盖的Java知识点而受到广大程序员的推崇。本压缩包包含的是《Thinking in Java》的第三版...
《Thinking in Java》是Bruce Eckel的经典Java编程教材,它以其深入浅出的讲解和丰富的实例赢得了广大程序员的赞誉。这个源码包包含了第4版的开发源码,旨在帮助读者更好地理解书中所阐述的概念和原理。以下是基于...
《Thinking in Java》是Bruce Eckel创作的一本Java编程经典教程,尤其以其第一版闻名于世。这本书深入浅出地介绍了Java语言的核心概念和技术,旨在帮助读者建立起对Java的全面理解,培养良好的编程思维习惯。作为一...
《Thinking in Java》是Bruce Eckel的经典编程教材,它深入浅出地介绍了Java语言的核心概念和技术。这本书以其全面性、深度和清晰的讲解而...记得结合实际项目进行练习,理论与实践相结合,将使你的Java之路更加扎实。
通过对《Thinking in Java》TXT电子书中部分内容的分析,我们可以看到Java语言的强大之处在于其丰富的类库支持、灵活的访问控制机制以及高效的代码组织方式。这些特性共同构成了Java开发的基本框架,对于初学者和有...
《Thinking in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,中文版的出版使得更多中文读者...通过阅读这本书,读者不仅能掌握Java编程技术,还能理解编程思想和最佳实践,从而成为一名出色的Java程序员。
《最新Thinking in Java第四版经典版》是Bruce Eckel所著的一本深入讲解Java编程语言的书籍。作为Java学习者和开发者不可多得的经典教材,它详细阐述了Java的核心编程思想和技术细节。本书不仅适合初学者入门,也...
《Thinking in Java》不仅仅是一本Java语言的学习手册,更是一部引导读者思考如何有效利用Java进行程序设计的著作。它强调的不仅仅是语法细节,更重要的是教授读者如何像一个真正的Java程序员那样思考问题、解决问题...