面向过程与面向对象,Java语言的特点,Java与C++区别

面向过程与面向对象,Java语言的特点,Java与C++区别

一、⾯向对象和⾯向过程的区别

1、
● ⾯向过程 :⾯向过程性能⽐⾯向对象⾼。 因为类调⽤时需要实例化,开销⽐较⼤,⽐较消耗资源,所以当性能是最重要的考量因素的时候,⽐如单⽚机、嵌⼊式开发、Linux/Unix 等⼀般采⽤⾯向过程开发。但是,⾯向过程没有⾯向对象易维护、易复⽤、易扩展。

● ⾯向对象 :⾯向对象易维护、易复⽤、易扩展。 因为⾯向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能⽐⾯向过程低。

2、⾯向过程性能⽐⾯向对象⾼??
这个并不是根本原因。

⾯向过程也需要分配内存,计算内存偏移量,Java 性能差的主要原因并不是因为它是⾯向对象语⾔,⽽是 Java 是半编译语⾔,最终的执⾏代码并不是可以直接被CPU 执⾏的⼆进制机械码。

⽽⾯向过程语⾔⼤多都是直接编译成机械码在电脑上执⾏,并且其它⼀些⾯向过程的脚本语⾔性能也并不⼀定⽐ Java 好。

二、面向对象的三大特征

封装、继承、多态

1、封装

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。

封装把⼀个对象的属性私有化,同时提供⼀些可以被外界访问的属性的⽅法。

如果属性不想被外界访问,我们⼤可不必提供⽅法给外界访问。但是如果⼀个类没有提供给外界访问的⽅法,那么这个类也没有什么意义了。

面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

2、继承

1、
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。

继承是使⽤已存在的类的定义作为基础建⽴新类的技术,新类的定义可以增加新的数据或新的功能,也可以⽤⽗类的功能,但不能选择性地继承⽗类。通过使⽤继承我们能够⾮常⽅便地复⽤以前的代码。

对象的一个新类可以从现有的类中派生,这个过程称为类继承

新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。

派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

2、
关于继承如下 3 点请记住:

  1. ⼦类拥有⽗类对象所有的属性和⽅法(包括私有属性和私有⽅法),但是⽗类中的私有属性和⽅法⼦类是⽆法访问,只是拥有
  2. ⼦类可以拥有⾃⼰属性和⽅法,即⼦类可以对⽗类进⾏扩展。
  3. ⼦类可以⽤⾃⼰的⽅式实现⽗类的⽅法。

重写就是子类对父类方法的重新改造,外部样子不能改变,内部逻辑可以改变。

3、多态

多态性是指允许不同类的对象对同一消息作出响应。

多态就是指程序中定义的引⽤变量所指向的具体类型和通过该引⽤变量发出的⽅法调⽤在编程时并不确定,⽽是在程序运⾏期间才确定,即⼀个引⽤变量到底会指向哪个类的实例对象,该引⽤变量发出的⽅法调⽤到底是哪个类中实现的⽅法,必须在由程序运⾏期间才能决定

多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

在 Java 中有两种形式可以实现多态:继承(多个⼦类对同⼀⽅法的重写)和接⼝(实现接⼝并覆盖接⼝中同⼀⽅法)。

三、Java语言的特点

1、简单易学;

2、 ⾯向对象(封装,继承,多态);

3、平台⽆关性( Java 虚拟机实现平台⽆关性);

4、可靠性;

5、安全性;

6、⽀持多线程( C++ 语⾔没有内置的多线程机制,因此必须调⽤操作系统的多线程功能来进⾏多线程程序设计,⽽ Java 语⾔却提供了多线程⽀持);

C++11 开始(2011 年的时候),C++就引⼊了多线程库,在 windows、
linux、macos 都可以使⽤ stdÇÉthread 和 stdÇÉasync 来创建线程。
参考链接:http://www.cplusplus.com/reference/thread/thread/?kw=thread

7、 ⽀持⽹络编程并且很⽅便( Java 语⾔诞⽣本身就是为简化⽹络编程设计的,因此 Java 语⾔不仅⽀持⽹络编程⽽且很⽅便);

8、编译与解释并存;

四、Java与C++的区别

我没学过C++

Java与C++的区别

● 都是⾯向对象的语⾔,都⽀持封装、继承和多态

● Java 不提供指针来直接访问内存,程序内存更加安全

● Java 的类是单继承 的,C++ ⽀持多重继承;虽然 Java 的类不可以多继承,但是接⼝可以多继承。

● Java 有⾃动内存管理机制,不需要程序员⼿动释放⽆⽤内存

● 在 C 语⾔中,字符串或字符数组最后都会有⼀个额外的字符‘\0’来表示结束。但是,Java 语⾔中没有结束符这⼀概念。 这是⼀个值得深度思考的问题,具体原因推荐看这篇⽂章:参考博客:https://blog.csdn.net/sszgg2006/article/details/49148189

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值