面向对象概述

这里的对象泛指现实中一切事物,每种事物都具备自己的属性行为
类:
类是一组属性和行为的集合,一类事物的共同特征(抽象),可以看做模板
对象:
类的实例化,具体的、有属性和行为的
属性:
对象的基本属性信息,可看做名词
行为:
对象的行为,可看做动词

面向对象特征

封装、继承、多态

类的定义

属性:
类中方法外的属性(成员变量)
行为:
在类中通过成员变量实现(成员方法)

对象的定义

类名 对象名 = new 类名;

对象的调用

对象名.成员变量;
对象名.成员方法();

成员变量和局部变量的区别

在类中的位置不同

成员变量:类中,方法外

局部变量:方法中或者方法声明上(形式参数)

作用范围不一样

成员变量:类中

局部变量:方法中

初始化值的不同

成员变量:有默认值

局部变量:没有默认值。必须先定义,赋值,最后使用

在内存中的位置不同

成员变量:堆内存

局部变量:栈内存

生命周期不同

成员变量:随着对象的创建而存在,随着对象的消失而消失

局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

this关键字

this的定义
this代表: 所在类的当前对象的引用(地址值), 谁调用,代表谁
this的使用
this.变量名

构造方法

  1. 构造方法名必须与类名相同
  2. 构造函数不是方法,它们没有任何返回类型
  3. 每个类都有一个构造函数,不管它是普通类还是抽象类。
  4. 构造函数可以使用任何访问说明符,它们也可以声明为私有。在java中可以使用私有构造函数,但是私有构造函数的作用域局限在类里面。
  5. 我们也可以定义一个和类名相同的方法,但方法必须要定义返回值的数据类型,我们可以据此判断和类名相同的方法和构造函数的区别。
  6. 如果我们没有在类中定义和实现任何构造函数,编译器就会在编译的时候自动在后台的代码中插入默认构造函数。
  7. this()和super()这两个语句如果放在构造函数代码里面,一定要放在构造函数代码里面的第一行。如果我们的代码里面没有这两个语句,编译器会在后台的代码中自动插入这两个语句。
  8. 构造函数可以重载(overload),但不能重写(override)。这意味着我们可以在类中重载(overload)构造函数,但不能重写(override)构造函数。
  9. 构造函数不能继承。
  10. 如果父类(super class)没有定义无参数构造函数(默认构造函数),那么编译器也不会自动在子类(child class)的后台代码里面自动插入默认构造函数。
  11. 接口没有构造函数。
  12. 抽象类可以有构造函数,抽象类的构造函数在创建具体类的对象的时候被调用到。

    构造方法和方法的区别

  13. 构造函数的目的是初始化类的对象,而方法的目的是通过执行java代码来执行任务。

  14. 构造函数不能是抽象的(abstract)、最终的(final)、静态的(static)和同步的(synchronised),而方法则可以是。
  15. 构造函数没有返回类型,而方法有返回类型。