面向对象(一)

---------------------- QQ:371524846  期待与您交流! ----------------------

一、面向对象和面向过程

  面向对象:
    面向对象是相对面向过程而言。所以说:面向对象是基于面向过程的。
  面向对象和面向过程都是一种思想。
  面对过程:
    强调的是功能行为。
  面向对象:
    将功能封装进对象。
  面向对象的三个特征:封装、继承、多态。
  以后开发:其实就是找对象使用,没有对象,就创建一个对象。
  找对象,建立对象,使用对象,维护对象的关系。

  耦合:类与类的关系。
  内聚:就是自己实现功能的能力。
  一般开发都要做到,低耦合,高内聚。

  基本数据类型的传递:
    形参的改变对实参没有影响。
  引用数据类型的传递:
    形参的改变直接影响实参。


二、类和对象的关系

  类:将一组对象的公共属性和行为进行抽象,并加以描述的结果。类是对象的抽象化,概括出来的产物。
  对象:就是这类事物,实实在在存在的个体。
  对象是类型的具体(个体)化,实例化。
  描述事物,其实就是在描述事物的属性和行为。
  属性对应的是类中变量,行为对应的是类中的函数(方法)。
  :属性:又叫成员变量、成员属性、对象变量、对象属性、实例变量、实例属性。
  属性的定义是被类体直接包含的。属性是类的成员之一!
  eg:
  class Person {
    String name;
    int age;
    String sex;
  }

  其实定义类,就是在描述事物,就是在定义属性和行为,属性和行为共同成为类中的成员(成员变量和成员方法)。
  注意:只在问题内抽象

  定义对象的语法: 类名 对象名 = new 类名();
  从上面这个语法可以看出类有两个作用:定义对象,定义实体。


三、匿名对象的使用

  eg:
    Person p = new Person();
    p.display();
    new Person().display();
  匿名对象只能使用一次,所以如果你创建的对象只是想使用一次的话,那么可以使用匿名对象。

  使用匿名对象可能还会用来调用函数。
  eg:
    fun(new int[]{1,2,3});
    fun(new Person());

四、成员变量和局部变量区别):

  作用范围:
    成员变量作用于整个类中;
    局部变量作用于函数中,或者语句中。

  在内存中的位置:
    成员变量:在堆内存中,因为对象的存在,才在内存中存在。
    局部变量:存在栈内存中。

五、封装(Encapsulation):

  1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
    好处:将变化隔离;便于使用;提高重用性;提高安全性。

  2.封装原则:
    将不需要对外提供的内容都隐藏起来。
    把属性都隐藏,提供公共方法对其访问。

  3.Time类说明封装性(hour、minute、second)
    要求:所有的属性都必须是private、方法是public、类也是public
    要求:为所有的属性添加getter/setter,即访问器和设置器。
    如果属性名字叫name,那么它的getter/setter方法名字分别是:getName()、setName()
    其实getName有返回值,但没有参数;
    setName()没有返回值,但有参数。
  4.使用private完成封装,使用public提供公有访问接口,即让属性私有,提供公有getter/setter


  成员访问权限比较:

            权限大小

      成员修饰符 public  protected   default(默认)    private

    同一个类中 OK      OK      OK         OK

    同一个包中 OK      OK      OK         NO

    子类访问  OK      OK      NO         NO

    不同包中  OK      NO      NO         NO



六、 构造函数

  (1) 特点:
    a.函数名与类名相同;
    b.不用定义返回值类型; (定义时的特点)
    c.不可以写return语句。
    d.只能使用new来调用。(是调用时的特点)
  作用: 给对象进行初始化(通常这么用).
  注意: 多个构造函数是以重载的形式存在的。
  (2) 默认构造函数
    当一个类没有构造函数时,编译器会为这个类添加一个public的,而且
    是无参、还无内容的构造器。

  匿名调用对象的属性没有意义,调用功能(方法)有意义。

七、this 关键字

  (1) this 用法一: 看上去,适用于区分局部变量和成员变量同名情况。
  【this为什么可以解决这个问题?this 到底代表的什么?】
  this:就代表本类的对象,到底代表哪一个呢?
  this代表它所在函数所属对象的引用。
  简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
  this 用法二:用于构造函数之间进行互相调用。

  (2) 注意:this调用语句,必须是在构造函数中的第一行,而且只能在构造函数中使用。

---------------------- QQ:371524846 期待与您交流! ----------------------

原文地址:https://www.cnblogs.com/Lt-Java13/p/3261957.html