电光微院授课之Java基本概念 165055.md

电光微院授课之Java基本概念 165055.md

Tans 1,392 2020-05-22

3.什么是面向对象?⭐

这应该是困惑我们最多的一个问题了.....

首先,C语言我们在大一学期已经学过, 那请你思考一下, 我们是使用C语言如何去实现一个功能的?

------哦! 这个我会, 就是去定义一个又一个函数, 然后在主函数里调用就好啦!

相信大家已经明白,OK, 那么我们就举一个例子来帮助你理解什么是面向对象:

Q: 有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择:

  1. 自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

  2. 去饭店,张开嘴:老板!来一份鱼香肉丝!

看出来区别了吗?这就是1是面向过程,2是面向对象。

面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。如果你突然不想吃鱼香肉丝了,想吃洛阳白菜,对于1你可能不太容易了,还需要重新买菜,买调料什么的。对于2,太容易了,大喊:老板!那个鱼香肉丝换成洛阳白菜吧,提高了可维护性。总的来说就是降低耦合,提高维护性

看明白了么, 那我们就用代码来实操一下吧!

/**java面向对象语言版本的鱼香肉丝**/
public class 老板{
    
    
    class(){
        
    } 
    public void cookFish(){
        getWater();
        getFish();
        ......
        //print("我做好了一盘鱼香肉丝!");
    }
    void cookCabbage(){
        getWater();
        getCabbage();
        .....
        print("我做好了一盘洛阳白菜!" );   
    }
}

/**获得一盘鱼香肉丝**/
main(){
    老板 张三 = new 老板(); //首先我先找到一个老板呀!这个老板就是张三
    张三.cookFish(); 		//一盘热气腾腾的鱼香肉丝已经上来了!
}
/**C语言版本的鱼香肉丝**/
int getWater(){
    print("我已经接好了水!")
}
int getFish(){
    print("我已经拿到了鱼!")
}
int cook(){
    print("烹饪鱼香肉丝")
}

/**获得一盘鱼香肉丝**/
main(){
    getWater();
    getFish();
    cook();     //经过了以上几个步骤, 我们自己做好了一盘鱼香肉丝!
}

通过以上代码, 我们发现:

  • 面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

  • 面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。(但是面向对象的底层也是面向过程, 就好像老板也需要去拿到水, 拿到菜然后烹饪)

因此,我们分析其二者的优缺点:

面向过程:

  • 优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
  • 缺点:不易维护、不易复用、不易扩展.

面向对象:

  • 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 .
  • 缺点:性能比面向过程差

了解了面向对象思想, 那么Java也已经算成功了一大部分, 接下来无非就是语法的学习, 按照我给大家推荐的网站进行学习吧!

相关工具的使用与下载

那么JDK中给我们提供了很多类库, 我们该如何去寻找他们呢, 所以我们需要学会查询 jdk 文档.

小白初次编写Java常常出错的点....

出现错误如何在IDEA 去Debug调试一个程序?

遇到问题如何优雅的去询问别人,

  1. 先自己查询问题 Google
  2. 如果想别人询问的话
    1. 代码截图 (源码)
    2. 讲明我想实现的是什么功能, 自己找到大概的错误位置
    3. 把我们的控制台报错信息给别人

这些, 我将在视频中展示........