大一的下半学期逐渐步入尾声,我的Java学习也以告一段落。经过一个学期的学习,不能说是融会贯通,但也算小有心得。下面就来谈谈我对这个学期Java学习的感受吧!

在大一的上半学期,我接触到了一个计算机语言——C语言。从而开始了我的程序员之旅,到了现在我已经掌握了两门语言。

先来谈谈java里的抽象类

抽象类的关键好处在于 能够实现面向对象设计的一个最核心的原则OCP(Open-ClosedPrinciple)。因此当我有一部分内容是不想让子类修改的,但是子类又都通用,同时各个自乐又有自己的特点,那么就适合使用抽象类。

在面向对象领域,抽象类主要用来进行类型隐藏。 我们可以构造出一个固定的一组行为的抽象描 述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个 抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。熟悉OCP的读者一定知 道,为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。符合开发封闭原则,我可以对抽象出来的类进行扩展,但是只要是这个抽象类的子类,那么他必然能够。从语法层面上讲,java单继承多实现,而接口可以多实现。

再说说java里的Main方法

Java中的main方法,是一个java应用程序的入口,无论一个java的应用多么复杂庞大,或是多么的小,只要他是一个可以运行的java程序那么必然就要有一个main方法。main方法的定义格式通常固定如下:

piblic static void main(String[] agrs){

}

void是java的main方法的返回值,理解返回值应该从方法调用者的角度去理解,java的main方法的调用者是java虚拟机,而java虚拟机在启动java程序时,只需要调用main方法,而不需要此方法返回任何的值,因此,main方法被设计为void的。

Java设计了几个访问修饰符,包括:private,protected,public。 在Java中声明为public的任何方法或变量都可以从该类的外部访问。 而JVM访问main方法显然不是在类的内部访问,因此main方法需要定义为public的方法。

关于static关键字我们知道的是,static关键字修饰的方法,可以不用通过创建一个类的实例,而是直接通过类名直接去访问。(以上专业知识均不为原创)

在了解了main方法后,我们才算步入Java的大门。下面讲解几个我入门时遇到的问题

1.类,对象,方法

按照我的理解,类你可以理解为一个大的统称,比如说:人,树,车,狗等等;而对象则是具体到它们之间的每一个,比如一个叫张三的人,一条叫小白的狗,一棵特指的树;而方法就是这个特指的对象干了什么事,比如张三去上厕所,小白去吃饭..这样的话是不是很好理解?

2.如何创建类

在Java中类呗规定用class来创建

比如:class Name;这样就新建了一个叫Name的类。当然在class前面你还可以有修饰比如;public。在这里要注意,类的名字必须是以驼峰方式来命名,就是首字母大写。

3.如何创建对象

创建对象的格式:[public|private|protected] [static] [final] 类型 方法名(形参){

方法体;

return表达式;}

其中如果是viod修饰,则改方法不用返回值,若不是的的话则需要return一个值(不能返回表达式);

4.如何定义属性

定义属性的格式:[ public | private | protected ] [ static ] [ final ] 类型 成员名

在这里我附上一些特殊的类型:

Boolean类型,成员变量的默认值是false。

Int类型,成员变量的默认值是0。

Double类型,成员变量的默认值是0.0。

String类型,成员变量的默认值是null。

Char类型,成员变量的默认值是\u0000

你们可能会发现,在属性和方法里面都有一个static,这里就有一个新知识,静态和非静态。

静态变量:从属于类,可以在不同的对象里面调用

若遇到其他问题可自行百度。

最后在来讲讲Java三大特性:封装,继承和多态

封装

首先,属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。

封装的好处:

1)        实现了专业的分工

2)        良好的封装能够减少耦合

3)        类内部的结构能够自有修改

4)        可以对成员进行更精确的控制

5)        隐藏信息,实现细节

封装的步骤

1)        修改属性的可见性来限制对属性的访问

2)        为每个属性创建一队赋值和取值方法,用于对这些属性的访问

3)        在赋值和取值方法中,加入对属性的存取限制

继承

Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个父类,易于管理程序,父类是子类的一般化,子类是父类的特化(具体化)

继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。

继承避免了对一般类和特殊类之间共同特征进行的重复描述。同时,通过继承可以清晰地表达每一项共同特征所适应的概念范围——在一般类中定义的属性和操作适应于这个类本身以及它以下的每一层特殊类的全部对象。运用继承原则使得系统模型比较简练也比较清晰。

Java继承的特征

1)继承关系是传递的。若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。

2)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。

3)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。

多态

方法的重写、重载与动态连接构成多态性。

Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦,为了规避风险,Java只允许单继承,派生类与基类间有IS-A的关系(即“猫”is a “动物”)。这样做虽然保证了继承关系的简单明了,但是势必在功能上有很大的限制,所以,Java引入了多态性的概念以弥补这点的不足,此外,抽象类和接口也是解决单继承规定限制的重要手段。同时,多态也是面向对象编程的精髓所在。 (专业知识均来自网上)

行文最后,谈谈我学习JAVA的自身感受。

都说计算机难,要秃头。所谓外行看热闹,内行看门道。在自身亲自学习完后,确实学习计算机,软件这几类专业。它需要一定的硬性要求,有些思路你想不出就是想不出,打破脑袋还是不行。所以,学习这种专业需要一定的智慧。还有重要的一点,你需要足够的细心和耐心,毕竟动辄几百行上千行代码,但凡出现一丝纰漏都会导致程序运行不了(亲身体验,我曾因为一个符号的错误,纠结了一下午)确实很麻烦。

总之学过了,我也可以自豪的说,在这场Java“战斗”中我坚持下来了,俗话说的好:坚持就是胜利!

学JAVA的诗句_学Java有感(终)相关推荐

  1. c语言和java哪个好学_学java前要学C语言吗?java和C语言哪个好学?

    在编程世界,只要一提到java,总会有人联想到C语言,仿佛这两者之间有着一种密不可分的联系,那么也会有外行人在选择学习编程时,会有类似于学java前是否需要学习C语言呢?或者说java和C语言哪个会比 ...

  2. 学习java web感想_学了近一个月的java web 感想

    对于每天学习的新知识进行一定的总结,是有必要的. 之前我学的每一门知识,我都没有怎么总结自己的问题,也没有怎么去想想该怎样才能学的更好,把知识掌握的更牢固.从现在开始呢,我会每半个月,或每一个月总结总 ...

  3. java吉他游戏_学JAVA弹吉他的姑娘是不是很酷啊?

    原标题:学JAVA弹吉他的姑娘是不是很酷啊? 我是毕业的前两个月认识小包子的,小包子大一学妹,一天晚上闲得无聊到田径场散步,看到草地上有几个人坐在一起弹吉他,因为好奇我就坐在一旁倾听,一曲毕后,我们才 ...

  4. java array缓存_有java数组

    [JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...

  5. java 分割一个_分割java

    [java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...

  6. java 字符串包_包java字符串

    Java核心技术卷I基础知识3.6.3 不可变字符串 3.6.3 不可变字符串 String类没有提供用于修改字符串的方法.如果希望将greeting的内容修改为"Help!",不 ...

  7. 云南大学软件学院java实验九_云南大学java实验9

    java实验 (9) 6页 2下载券 Java实验9 4页 2下载券 JAVA实验9 7页 1下载券 java 实验9 暂无评价 1页 免费 Java上机实验9 4页 免费 云大JAVA 实验9图形. ...

  8. java 小坑_关于Java子父类关系的小坑

    原标题:关于Java子父类关系的小坑 学过JavaSE的都知道java类在初始化的时候,如果存在直接父类,是先初始化父类,然后才初始化子类. 子类拥有父类所有的非私有化成员,非私有的成员不仅仅包括pu ...

  9. java时间比较_广州java培训大概多久时间可以毕业

    在互联网迅速发展的时代,很多企业都离不开java开发人才,这也导致市场对java开发人才需求量缺口巨大.现在有很多的小伙伴都想学习java,那么,广州java培训大概多久时间可以毕业?这个问题就由动力 ...

最新文章

  1. Post请求,向服务器发送用户信息
  2. idea 提示vue插件_Vue + SpringBoot + MyBatis 音乐网站
  3. macOS上实现Qt应用程序做文件关联打开
  4. IO-5(InputStreamReader、OutputStreamWriter、序列化流、反序列化流、Serializable、transient)
  5. 数据结构---后序和中序遍历的二叉树序列还原二叉树
  6. oralce9i备份的数据导入到oralce10g中的过程
  7. 语法错误: leftparen 应在 colon 之前
  8. Focal loss原理解析
  9. 准双向口和KELL C头文件已经处理
  10. JAVA王思聪吃热狗程序_王思聪吃热狗什么梗?
  11. Win10快捷键大全
  12. [存档]CxServer系统
  13. 命令行字符界面与图形界面切换
  14. SHELL DATE 命令详解
  15. 影之刃服务器维护,影之刃无法联机到服务器怎么办 解决办法
  16. 【QT课程设计】五:部分内容修正、利用opencv读入视频并进行部分图像处理
  17. unity3d横版游戏移动_制作游戏并不困难。 回顾Unity3D上的小型移动项目
  18. iPhone4S安装Linux系统,Absinthe 2.0.4 官网Windows/Mac/Linux原版下载—iPhone4S和iPad2完美越狱工具...
  19. Windows平台利用完成端口模型创建高性能网络服务器
  20. iphonese左滑返回_2020年最热门的7种iPhone SE替代产品,您一定会感到惊讶!!! 加上Google Pixel 4a的对比。

热门文章

  1. 64位 int 占几个字节_面试常考,项目易错,长文详解C/C++中的字节对齐
  2. python笔记记录(包和模块)
  3. windows vs编译环境 python_Python虚拟环境使用(Windows)
  4. 简单Android app开发_如何简单快速开发外卖app?
  5. mysql约束条件整型_MySQL 表的操作
  6. Unity3d AR 增强现实技术列表(2016年3月31日更新)
  7. android 模拟器方向键,键盘操控使用方法
  8. 使用C#将DataTable导出到文件
  9. c# 将doc转换为docx
  10. 面向对象的分析与设计