java面向对象编程总结

在经过十周的java学习后,我对于原本一窍不通的课程又有了新的理解,它也并不是原本我不认识之前高冷的模样,我在慢慢的接触它,认识它,了解它。但现在为止,我对于我所学习的java中的“面向对象编程”做一个个人总结,其中观点仅代表个人,如有错误,敬请纠正。

在我所学习的教材中,将“面向对象编程”分为1,2,3三个章节,我也将我所学习的内容分为三个点来进行总结。

  • 面向对象编程1
  1. 什么是面向对象

在这个章节里面,我们知道了什么是面向对象,如果用一个比喻来说的话,面向对象就像是养花一样,买个花瓶,再买束鲜花,不喜欢花就换花,不喜欢花瓶就换花瓶。与之相对应的就是面向过程编程,在很多时候,面向过程对于编程来说更加简单,因为你思考的只是怎么解决这个问题,就像是买的一盆连花带盆的塑料模板,虽然方便,但是不够灵活,但是并不是说面向过程不好,只是适用的场合不同。

  1. 认识类和对象
  1. 类和对象:

在java之前,我们学习了数据类型,循环之类的简单程序,但那是很简单的用法,对于很多对象来说,是没有办法用一个数据类型就把它定义完整的,在此举例矿泉水瓶,它有长宽高,有名字,有材料等等,它们共同构成一个对象,所以在java中就有了类,也就是class的诞生。

定义类:class 类名{所含变量定义}

  1. 使用实例化对象:

类名 对象名=new 类名();

  1. 访问对象中的成员变量:

对象名.成员变量名

  1. 对象的引用性质:

同数组名相同,对象名也表示一个引用,对象名赋值并不是将对象内的内容进行赋值,而是引用赋值。

  1. 认识成员函数
  1. 成员函数:

将编写一遍的代码可以多次进行使用。

  1. 定义成员函数:

Void 函数名称(类型1参数1,类型2参数2…..){函数内容;return 和函数返回类型一致的某个变量或对象;}

**没有返回类型(就是上面括号中没有内容)的函数也可以使用return,代表跳出该函数,直接使用return;即可。

  1. 函数参数的传递:

注意使用的简单数据类型、引用数据类型之间的区别。

  1. 函数重载

函数重载也称静态多态,在代码中定义了两个名字相同但是参数不同的函数,在调用的时候就可以根据参数的不同来辨别两个函数,但是不能简单的将两个函数名定义的一样,需要函数参数的个数不相同,个数相同类型不同,个数相同类型相同但是顺序不同。

  1. 认识构造函数
  1. 定义和使用构造函数:

构造函数也是一种函数,需要遵守函数名称与类的名称相同,不含返回类型的规则。

**其中,当类的对象被建立,构造函数就会被自动调用,在函数生命周期里,构造函数只会被定义一次,且它可以被重载,如果一个类中没有定义构造函数,系统会自动为这个类产生默认的构造函数,该函数没有任何参数,不做任何事情。

  • 面向对象编程2
  1. 静态变量和静态函数
  • Static:

静态static随着类的加载而加载,优于对象存在,被类的所有对象共享,可以通过类名调用。

  • 静态变量的常见应用:

常用于保存跨对象信息,存储对象个数。

  • 静态函数:

有静态变量肯定就有静态函数,它们统称为静态成员。

  • 静态代码块:

对所有对象的共同信息进行初始化,并对所有对象只执行一遍。

  • 认识封装

实现封装:将成员定义为私有的,并在成员之前加上private,将成员定义为公共的,可以在成员之前加上public。私有只能在类的内部被访问。

  • 使用包
  1. 包:将所有的Java类写在同一个文件中会显得十分拥挤,这个时候就需要将它们根据不同的类分在单独的文件中,然后放在一个包里,包相当于集合了同一代码内所有类。
  2. 将类放在包中:

在类的定义文件头加上package 包名。

  • 访问包中的类:

同一个包中直接指明类名就可以访问

不同的包中指明类的路径。

  1. 使用访问控制修饰符

Private类型的成员只能在定义它的类的内部被访问。

Default可以被它的类的内部访问也可以被这个包中的其他类访问。

Protected可以在定义它的类的内部访问,也可以被这个包中的其他类访问,还可以被包外的子类访问。

Public可以被所有其他类访问。

  1. 使用类中类

在类中再定义一个类,就是用于关系比较复杂的对象。

  • 面向对象编程3
  1. 使用继承
  1. 继承:

这个世界总有很多对象是具有很多相同的点的,所有没有必要在定义一个类的时候就去重新写一次,继承就是将相同的部分提出来,只写一遍,下次想用的时候就可以直接使用,相当于公共部分。

Class 子类 extends 父类{}

  1. 实现继承:

一个子类只能有一个父类,但是可以多重继承,比如父亲有了儿子,儿子也可以有孙子,相当于孙子间接性继承父亲,可以理解为隔代遗传。

  • 成员的覆盖
  1. 成员覆盖:子类中的函数定义和父类相同,最后调用的是子类中的方法,成为覆盖或者重写。
  2. 成员覆盖的作用:不改变源代码的情况下对一个模块的功能进行修改。
  • 使用多态
  1. 多态:父类的引用可以指向子类对象。
  2. 使用多态:

函数传入的形参可以使父类类型,而实际传入的可以使子类对象。

函数的返回类型是父类类型,而实际返回的可以是子类对象。

  • 父类和子类对象的类型转换:相互转换。
  • 抽象类和接口
  1. 抽象类:抽象类不能被实例化,抽象函数必须重新写,除非子类也是抽象类,在抽象类中可以含有普通成员函数。
  2. 接口:如果一个抽象类中的所有函数都是抽象的,也可以定义为接口。
  • 其他
  1. 关键字final
  2. Object类
  1. 工具的使用
  • 总结

在这些内容中,有很多是我在学习中还存在困惑的地方,希望时间能够见证我的进步。

你可能感兴趣的:(java,开发语言)