学习Java已经三年了,现在开始做Android开发,虽说还在用Java语言但本人现在才真真的意识到无论学什么基础才是最重要的,可能一些刚接触Java或者Android的朋友现在还体会不到基础的重要性,感觉能做出实实在在的东西来才是自己真真能力的集中体现。都说IT行业是一个要会学习的行业,因为这个行业的知识更新很快,也许就是这个原因很多新人很重视新技术的使用方法缺往往忽视了基础。我认为作为技术人员的我们两样东西很重要,一个是兴趣、二是会学习,如何才能做到这两点呢?

兴趣不能说是一个人与生俱来的东西,兴趣是可以培养的,比如从自己写的代码中获得成就感。

会学习就是学会钓鱼的方法,这样学习效率会提高很多,计算机的世界里面离不开0和1,同样学程序的离不开最基本的课程,这些看似不重要的大学课程不是不重要,而是没有遇到合适的机会,你的经验还不足以领悟这些。在学习和开发Android的过程中突然想再系统回顾一下Java SE部分的知识,为后面的道路打下坚实的基础。

一、万事万物皆对象

这句话当时在学习Java的时候听起来有道理,当时没有真真的领悟,现在感觉总结的非常好,这一句话完全阐述的面向对象的根本原理。

我们从窗户向外望去:

1、每棵树:每一课树都可以看成一个对象。

2、每个人:每一个人也可以看成一个对象。

3、每个人上班的事件: 可以看成一个对象。

。。。。。。

类则是从某一部分对象中抽象出来的一个群体,这些群体具有某些共同的特征,我们可以根据我们所需的某几个特征抽象出我们自己想要的类。

每个人都是对象,我们可以抽象出来人的共同特征,就像我们给自然界的物质分类一样(小学的自然课是我们学习面向对象的第一堂课)。

每个人上班的事件是对象,我们可以抽象出来上班,上班和上课就是两个类。

二、面向对象的四个基本特征

1、抽象:类是一个抽象的概念,也就是说类是不确定的,是一个变化的概念,而不是一个实实在在的东西。我们可以将可以跑的东西分成一类,也可以将既可以跑又可以飞的东西分成另一类。只要你头脑里面有一个分类的想法就可以分成一类,所以类是抽象的,但是对象是实实在在的哦。所以我们在定义一个类的时候也可以用接口和抽象类。

2、继承:继承其实就是一种组合关系,比如刚才提到的,能跑、既能跑又能飞,这两者之间就有一种包含关系。

这种包含关系可以分为两种,一种是is-a关系,比如学生is-a人,这种关系就需要用继承 extends 。还有一种关系就是is-a-part(一部分),比如眼睛是脸的一部分,这种关系就要用组合关系,需要用眼睛作为脸的属性注入进去。

3、封装:封装是面向对象和面向过程最大的不同,你只需要知道你想要的东西,无须知道具体内容和过程。比如你有一个手机需要充电,你此时只需要知道你的手机接口是什么形状(如usb),和电流参数即可无须知道别的,就可以充电。封装可以提高对象的安全程度,不需要暴露的东西私有化,你就无权访问。

4、多态:这个很容易理解,你可以说小明是个学生也可以说小明是个人。学生和人都是类,并且有继承关系,所以说多态是基于继承关系的。

三、Java语言的特点

1、简单:这个对于只学过一种Java语言的朋友来说就没法说明了,因为没有可比较的参照物,简单和复杂也是一个相对的概念。

2、面向对象:java语言的代码中只有类和配置文件(其实有的配置文件底层会转化成对象,比如Android中的xml文件)。

3、跨平台:不是Java跨平台其实是Java运行环境(Java虚拟机)跨平台。

4、安全:主要有两个方面,一个是Java不支持指针,二是Java中的对象都有面向对象的封装特性。

5、多线程:Java处理多线程更加简单和便捷。

四、Java运行环境

Java运行环境的架构如图所示,就是我们从官网上下载的JDK的安装包安装后的结构。

JVM:处于最底层,直接和我们的操作系统打交道,是Java语言的运行环境,可以将我们编译的.class文件翻译成不同机器能够识别的机器码。不同平台都有所对应的JVM,所以说Java中唯独JVM是不跨平台的,正是因为JVM的这个特点才使Java语言具有跨平台的特点。

Java SE API:其实是一组提供给用户操作的接口,开发Java语言其实就是操作这些接口。

JDK:开发工具,集成和封装了开发和编译Java源代码的工具。

以上纯属个人的观点,如果有问题或者更好的观点请指出,欢迎分享个人的理解来交流和讨论,共同进步。

JAVA SE回顾及思考(1)——面向对象的特点的更多相关文章

  1. JAVA SE回顾及思考(3)——排序算法

    排序的算法是很多公司的笔试和面试题,个人感觉Java中其实无需使用这些排序方法,因为Java中已经为我们提供了很方便效率很高的sort()方法.但是不使用不能代表不需要学习这些算法,也不是仅仅为了面试 ...

  2. JAVA SE回顾及思考(2)——数组的复制与动态扩展

    我们知道在Java中数组是非基本类型既数组是对象(Object)的子类,所以用下面的这种方式是不能复制该对象的 public static void main(String[] args) { int ...

  3. Java SE学习【二】——面向对象

    面向对象的学习也进行了一段时间,这段时间学了,类和对象:属性:方法:封装:继承:多态:接口.也算是有一些自己的理解,不愧是贴近人类思维的思想,老师讲时我常常会想到以前的一些事物和其交相印证,其中最常想 ...

  4. Java SE 第十六讲----面向对象特征之继承

    1.继承(inheritance):Java是单继承的,意味着一个类只能从另一个类继承(被继承的类叫做父类也叫[基类 baseclass]),继承的类叫做子类,java中的继承使用extends关键字 ...

  5. JAVA内容回顾(二)——面向对象(OOP)

    1.类与对象 类:类指的是同种对象的抽象,看不见摸不着的.包含有属性与方法. 对象:是类的具体实现,看的见摸得着的东西. 类是对象的抽象,对象是类的具体实现. 2.访问修饰符 public:在项目的任 ...

  6. Java SE 第十六讲----面向对象特征之多态

    1.多态:polymorphism:我们说的子类就是父类(玫瑰是花,男子是人),因此多态的意思就是:父类型的引用可以指向子类的对象 public class PolyTest { public sta ...

  7. Java SE教程

    第0讲 开山篇 读前介绍:本文中如下文本格式是超链接,可以点击跳转 >>超链接<< 我的学习目标:基础要坚如磐石   代码要十份规范   笔记要认真详实 一.java内容介绍 ...

  8. 黑马程序员 ——Java SE(1)

    ----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训 ...

  9. 第42节:Java知识点回顾复习

    Java介绍 Java是一门面向对象的程序设计的编程语言,在1995年,sun公司发布了Java这门编程语言,有咖啡的名称,是当时灵机一动的想法.在2010年的时候被Oracle公司收购了,目前jdk ...

随机推荐

  1. 【Codeforces Round #443 (Div. 2) B】Table Tennis

    [链接] 我是链接,点我呀:) [题意] n个人站在一排. 每次第一个人和第二个人打架. 输的人跑到队列的尾巴去. 然后赢的人继续在队首.和第三个人打. 谁会先赢K次. [题解] 会发现,一轮之后就一 ...

  2. jQuery笔记---选择器

    查找API,jQuery选择器,定位标签 1.基本选择器 id定位标签 class属性定位标签 标签名定位标签 2.举例 <html> <head> <meta http ...

  3. python3中sum

    摘自https://blog.csdn.net/ikerpeng/article/details/17026011 其实python中sum有两种 一种是python自己的sum 另一种是python ...

  4. pcb过孔盖油

    pcb的过孔应该盖油,,这样,两个距离比较紧的过孔就不会在焊接的时候短路了,尤其是手工焊接小件的时候.

  5. 点滴记录——学习Redis笔记

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/39701409 Redis 默认port6379 Redis适用场景 1. 取最新N个数据的操 ...

  6. Redis Cluster(Redis 3.X)设计要点

    Redis 3.0.0 RC1版本号10.9号公布,Release Note这个版本号支持Redis Cluster.相信非常多同学期待已久,只是这个版本号仅仅是RC版本号,要应用到生产环境,还得等等 ...

  7. 安装spark1.3.1单机环境 分类: B8_SPARK 2015-04-27 14:52 1873人阅读 评论(0) 收藏

    本文介绍安装spark单机环境的方法,可用于测试及开发.主要分成以下4部分: (1)环境准备 (2)安装scala (3)安装spark (4)验证安装情况 1.环境准备 (1)配套软件版本要求:Sp ...

  8. 搭建hadoop2.6.0集群环境 分类: A1_HADOOP 2015-04-20 07:21 459人阅读 评论(0) 收藏

    一.规划 (一)硬件资源 10.171.29.191 master 10.171.94.155  slave1 10.251.0.197 slave3 (二)基本资料 用户:  jediael 目录: ...

  9. NSCache使用常见错误

    NSCache用来存储缓存数据的时候.和NSDictionary功能类似, 可是NSCache有一个特别的问题: 一旦接收到内存警告之后,假设使用[NSCache removeAllObjects]处 ...

  10. html中的span有value属性么(可以作为自定义属性在jquery中用)

    html中的span有value属性么(可以作为自定义属性在jquery中用) 一.总结 可以作为自定义属性在jquery中用 二.html中的span有value属性么 value并不是span标签 ...