Java语言概述——面向对象、跨平台特性以及和C++的区别

Java语言具有的特点:面向对象、跨平台、多线程以及网络编程

1. 和C++的区别

1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全。

1.2 Java类继承只能单继承,避免了C++多继承的复杂性。

1.3 Java完全面向对象,所有方法和变量都是类的一部分;而C++允许全局属性。

1.4 C++支持操作符重载,而Java不支持操作符重载。

2. 面向对象

2.1 面向对象和面向过程的对比

2.1.1 面向过程:程序是结构化的设计方式,将系统分成若干个过程,每个过程通过函数实现相应的功能。

优点:程序逻辑简单,开发简单的程序效率较高

缺点:不适用于复杂系统,开发的系统耦合度高,拓展性低

2.1.2 面向对象:在开发中,将系统分为一个个模块,每个模块实现了系统某一类事物的功能。在现实中,任何物体都可以归为某一类事物,任何个体都是某一类事物的实例。

优点:系统耦合度低、拓展性高;适用于开发复杂系统

缺点:开发程序进行大量的系统分析与设计,抽象出各个对象

2.2 面向对象的三大特性——封装、继承和多态

2.2.1 封装:将一部分成员隐蔽,并为一部分成员提供对外的操作接口;合理控制成员的访问控制权限以及适当的封装(在成员set方法中进行相应限制),可以增加数据的安全性。

2.2.2 继承:基本作用是代码复用,主要作用是方法覆盖和多态机制。只可以单继承,没有父类的所有类默认继承java.lang包下的Object类。父类的私有方法和构造方法不会被继承也就不会有方法覆盖,但是在内存中创建子类对象时,是会创建父类私有方法的如下图官方文档

哪种类型的引用,执行哪种类型的私有方法,如下图。

父类的静态方法有继承,如下图。

但是静态方法在使用多态机制时,是编译时多态(静态绑定),也就是编译时是哪个类型的对象调用静态方法就执行哪个类型的静态方法。

2.2.3 多态:父类型引用可以指向子类对象(向上转型),指向不同对象,可以表现出不同的行为。实现了面向对象编程,符合OCP原则(对拓展开放、对修改关闭),降低了程序的耦合度(实现者和调用者的耦合),提高了程序的拓展力。多态中由于经常涉及到类型转换,所以可以使用instanceof关键字判断某个变量是否某一类型的实例对象。

3. 跨平台 

3.1 java的运行环境

JDK(Java Development Kit): 是Java开发工具包,包含JRE、编译器javac以及调试工具JDB和JAVAP等工具。

JRE(Java Runtime Environment): 是Java运行环境,包含JVM、java运行类库以及基础构件。

JVM(Java Virtual Machine): Java虚拟机,负责解释、执行java字节码文件,是Java实现跨平台的核心。

3.2 java程序编译、运行过程

java程序分为编译和运行两个阶段,使用javac指令可以编译java源程序,编译主要是检查源程序是否符合java语法规则,将源程序编译为.class字节码文件,字节码文件是面向java虚拟机的,而不面向特定处理器;然后使用java指令可以运行字节码文件,不同平台的java虚拟机负责将字节码解释运行在不同平台上,实现了可移植性。

3.3 字节码文件

字节码文件分析可参考另一篇博客 https://blog.csdn.net/yldmkx/article/details/108942906

猜你喜欢

转载自blog.csdn.net/yldmkx/article/details/109231718
今日推荐