java基础学习——对面向对象的重识

最近几天在看java的视频,感觉很多东西java语法上很像c#,但是还是有很多内容惊到我:

1,java虚拟机

用过VMWar或者VirtualBox的童鞋都对“虚拟机”这个词有个大致的了解,虚拟机提供了个虚拟的平台,让我们可以模拟一些脱离硬件的环境。java里的虚拟机起到了一个类似以前学过的ODBC驱动程序的作用,它屏蔽了底层的差异,让操作系统通过虚拟机向下面看去,操作系统的感觉都是一样的。

有了这一层东西,我们彻底解开了底层硬件和运行操作系统之间的耦合,实现了一次编译,到处运行的梦想。这里的解耦思想和软件的分层思想是一致的。

如果你想让各层次都灵活变动,那么,在它们中间加上接口吧。

2,数据类型

在基本数据类型里面,雷到我的是数组和String是引用类型,看来以前我的c#很不扎实啊,百度了一下,c#也是这样的,它们都是引用类型;

先讨论下对基本类型和引用类型的内存访问的区别:在访问基本类型的时候可以直接取到值,而引用类型必须先从stack 里面取到heap的地址,然后跑到heap里面去取实际的值;从对内存的访问来看,引用类型似乎没有值类型的优势。

但从面向对象的角度看,引用类型还是有众多好处的:

a.引用类型可以被序列化,原始类型不行。(这个不懂!)

b.引用类型提供的方法可以灵活转换,可以扩展,原始类型不行

c.在集合类中只能使用对象,不能使用原始类型

d.原始类型没有null的概念,对象有,某些情况下需要辨别某个参数是否被初始化了,如果使用原始类型,那么0的值不知道是初始值还是没有初始化系统自动给的。

关于两种数据类型用变和不变的观点看,基本数据类型编程语言中不变的部分,而引用类型是为了应对显示世界中的对象而动态组合的类型。

3,构造函数的返回值问题

以前学习c++的时候,碰到过很多构造函数的初始化类成员的问题。这次在学习构造函数这里的时候,视频中为了说明构造函数没有返回值的问题时,特意在为构造函数加上void,结果报错。 但是有没有想过构造函数为什么没有返回值呢?  或者说构造函数的返回值已经有一个不可更改的默认值了,就是对象本身。 想想我们使用new的时候,Dog d=new Dog(),new后面的东西就是调用的构造函数,它返回的就是d.

那么,我们是不是可以认为因为类的构造函数有默认的返回值而不能自己定义返回值呢?

小结:面向对象的语言到现在已经学过了VB.NET ,C #,C++,这次对java的学习,是对面向对象知识的一个重新的梳理和总结提升的过程;也是认识封装,继承,多态,抽象,并对它们重新思考的过程。

时间: 2024-12-22 19:22:53

java基础学习——对面向对象的重识的相关文章

java基础学习总结——面向对象1

目录 一.面向过程的思想和面向对象的思想 二.简单理解面向对象 三.面向对象的设计思想 四.对象和类的概念 五.如何抽象出一个类? 六.类(对象)之间的关系 七.Java与面向对象 八.为什么使用面向对象编程? 一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该分析这个问题里面有哪些类和对象,这是第一点,然后再分析这些类和对象应该具有哪些属性和方

java基础学习_面向对象(上)01_day07总结

==========================================================================================================================================================涉及到的知识点有:1:面向对象(掌握) (0)面向过程和面向过程开发 (1)面向对象思想概述 (2)面向对象的思想特点 (3)把大象装进冰箱(理解) (4)类与对象的关系 (5)类的定义及使用

java基础学习_面向对象(上)03_day08总结

==========================================================================================================================================================涉及到的知识点有:0:前面学习通过方法对代码进行改进,为什么要给方法使用静态呢?1:Java如何制作帮助文档(API)(了解)2:通过JDK提供的帮助文档(API)学习了Math类(掌握)3:

java基础学习05(面向对象基础01--类实例分析)

面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过setter和getter设置和取得4.如果需要可以加入若干构造方法 5.再根据其它要求添加相应的方法6.类中的所有方法都不要直接输出,而是交给被调用处调用 Demo 定义并测试一个名为Student的类,包括属性有"学号"."姓名"以及3门课程"数学".

java基础学习05(面向对象基础02)

面向对象基础02 实现的目标 1.String类的使用 2.掌握this关键字的使用3.掌握static关键字的使用 String类 实例化String对象一个字符串就是一个String类的匿名对象,就是已经开辟了堆内存空间的并可以直接使用的对象.1.采用直接赋值的方式进行操作. String name = "zhangsan"; 使用这种方式,如果一个字符串已经被一个名称所引用,则以后再有相同的字符串声明时,就不会再开辟内存空间.2.直接调用String类的构造方法(public S

java基础学习_面向对象(下)01_day08总结

==========================================================================================================================================================涉及到的知识点有:1:继承(掌握) (0)Java继承概述 (1)继承定义 (2)Java中如何表示继承呢?格式是什么呢? (3)继承的好处 (4)继承的弊端 A:让类的耦合性增强.这样某个类

java基础学习_面向对象(上)02_day07总结

==========================================================================================================================================================涉及到的知识点有:---------------------------------------------------------------------------------------

java基础学习笔记day01

java基础学习笔记day01 1.软件开发: 软件:按照特定顺序组织的计算机数据和指令的集合 开发:软件的制作过程 软件开发:借助开发工具和计算机语言制作软件 2.java概述: java之父:詹姆斯·高斯林 JDK:java开发环境 jre:java运行环境 JVM:java虚拟机 java跨平台是因为,JVM能在不同的平台运行,JVM是跨平台的 JavaSE:标准版 JavaME:手机端,物联网 JavaEE:企业版,互联网项目 3.java语言特点: 简单性 解释性 面向对象 高性能 分

java基础学习总结——GUI编程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 public class TestActionEvent { 7 public static void main(String args[]) { 8 Frame f = new Frame("