理解面向对象编程之java/javascript

可能,不已经要往java方向学习了,最近项目里,涉及到很多前后台交互的问题,自己本来只碰前台的东西,但是有的功能实现需要后台数据和方法的调用,然后又没有现成的给你用,自己的工作又不能停下来不做,索性往后台也看看,可能我自己总是太过乐观,把什么东西都想的过于简单,总之要一步步来了...

举个实例:

对象实例化,有自己的属性和方法


理解面向对象编程之java/javascript_第1张图片

javascript中的面向对象 以及关于类的看法?

面向对象(面向对象它是一种编程思想, 使用对象编程就是面向对象编程,自己粗略的看法哈)也是前端面试的必考题,关于它,我自己记忆犹新的就是封装继承多态,以及他们各自的特点,缺点


接下来你对对象的理解?

我在想不知道多少小伙伴被万物皆对象给坑着,我自己的看法就是现实中存在的事物,不管是看得见的看不见的,摸得着的摸不着的,都是对象,只要能和现实联系起来的都可以称之为对象;

理解面向对象编程之java/javascript_第2张图片

而在我们自己程序辕的眼里,对象就是我们写的一行行能够表示现实社会中事物的代码

这和计算机是一样的,因为计算机并不识别,我们需要转换成相应的二进制机器代码才能被计算机认识;

对象的生命周期:

对象从new关键字创建时生命周期开始;

对象在没有任何引用指向时生命周期结束, 成为垃圾;

什么是匿名对象:

一个对象如果只使用一次, 就可以定义为匿名对象;

不用任何变量引用, 使用之后立即成为垃圾;


面向对象的一个必问概念------>类
理解面向对象编程之java/javascript_第3张图片

是用来描述对象的, 需要使用类来创建对象; 将一类事物的特征定义为成员变量, 将这类事物的行为定义为成员方法;

理解面向对象编程之java/javascript_第4张图片

java中类的使用:

  • 定义

    • class 类名 { 类定义 };
  • 使用类创建对象

    • new 类名();

    • 对象会存储在堆内存中, 在创建的时候会将成员变量默认初始化;

      • 堆内存和栈内存,自己去看吧;
    • 使用.变量名可以访问对象的成员变量;

    • 使用.方法名()可以访问对象的成员方法;


现在就不说javascript中的面向对象,因为在javascript中严格意义来说,是没有一个类的概念,它不像C++JAVA有类的概念,也没有C里面的结构体,只不过它有一个万能的function,可以实现类的功能;

C语言中也不存在类,类是C++的概念;

C语言是面向过程的语言,而类是面向对象的概念,所以C语言是没有类的概念的;

另外还要说的是,在C语言产生的时候,是没有类的概念,也没有面向对象的概念,这两个概念都是后来才被提出来的,具体就是在C语言基础上增加的面向对象的理念,增加了类的定义,多态的实现,但它明显和C语言是有差别的,也就是后来的C++,可以说C++是C语言的延伸或者超集

从Java角度剖析面向对象的特点?

1>. 继承:

继承是从已有的类得到继承信息创建新类的过程。

  • 提供继承信息的类被称为父类(基类、超类);
  • 得到继承信息的类被称为子类(派生类);
  • 继承让变化中的软件系统有了一定的可延续性,同时继承也是封装程序中可变因素的重要手段;

2>.封装:

封装就是隐藏一切可隐藏的东西,只向外界提供最简单的接口。

  • 在类中编写的方法是对实现细节的封装;
  • 编写一个类就是对数据和数据操作的封装;

将一类事物的特征和行为定义在一起, 放在一个类中, 创建这个类的对象时, 该对象就可以使用自己的特征和行为了;

3>.多态:

多态是指允许不同子类型的对象对同一消息做出不同的响应。

多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类。

该统一风格可以由父类来实现,根据父类统一风格的处理,就可以实例化子类的对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样降低了维护的难度,节省了时间。

在提到多态的同时,不得不提到抽象类和接口,因为多态的实现并不依赖具体类,而是依赖于抽象类和接口。

  • 编译时多态:
    • 是指根据参数列表不同来区分不同的函数,编译之后就会变成两个函数,主要指方法的重载;
  • 运行时多态:
    • (动态绑定),指在程序运行期间判断所引用对象的实际类型,根据实际类型判断并调用相应的方法和属性;

要实现多态需要做两件事:

  1. 方法重写(子类继承父类并重写父类中已有的或抽象的方法);
  2. 对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为);

你可能感兴趣的:(理解面向对象编程之java/javascript)