JavaSE学习笔记系列:面向对象(2)

接下来一段时间,会持续发布一个JavaSE学习笔记系列文章!

1.构造方法

  1. 构造方法是用来初始化对象的一个方法。
  2. 使用new+构造方法可以创建一个对象。
  3. 构造方法没有返回值且与类同名。
  4. 当没有构造方法时,系统给出形如 类名(){}的默认构造方法。
  5. 如果已经定义了构造方法,则系统就不再有默认的构造方法。

2.约定俗成的命名规则

  1. 类名首字母应该大写。
  2. 变量名和方法名首字母应该小写。
  3. 应用驼峰标识。(在有多个单词构成时,除了首字母遵循1、2规则外,其余字母的首字母都应该大写)

3.重载

  1. 方法的重载是指一个类中可以有多个相同名字但是参数不同的方法。调用时,会根据不同的参数来选择不同的方法。
  2. 方法的名字、参数相同,但是返回值不同的方法不构成重载。
  3. 构造方法也可以重载。根据不同的对象创建不同的对象。

4.this关键字

  1. 在类的方法定义中使用的this关键字代表使用该方法对象的引用。
  2. 当必须指出当前使用的对象是谁时必须使用this关键字。
  3. 有时使用this可以处理成员变量和参数重名的情况。(this 变量代表对象本身,可以区分成员变量和局部变量)
  4. this可以看成是一个变量,它的值是当前对象的引用。
  5. this一般出现在方法里。
  6. this 可以简化构造函数的调用。
  7. this 变量允许相同的实例方法为不同的对象工作。每当调用一个实例方法时,this变量将被设置成引用该实例方法特定的类对象方法的代码接着会与this所代表的对象的特定数据进行关联

5.static关键字

  1. 在类中用static声明的成员变量为静态成员变量,它为类的共有变量,在第一次使用时被初始化,对于该类的所有对象来说,static变量只有一份。
  2. static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在静态方法中不能访问非静态方法。(静态方法不再是针对某个的对象的引用)
  3. 可以通过对象的引用或者类名访问静态成员(不需要实例化)。
  4. 静态变量放在数据区。(字符串也放在数据区)
  5. 静态变量是属于某个类的,而不属于某个对象。非静态成员专属于某个对象,所以访问某个非静态成员时必须先new一个对象出来。(皮之不存,毛将焉附)
  6. 静态变量可以用来计数,非静态变量不行。
  7. 非静态方法可以调用静态方法!

6.继承

  1. Java中使用extends关键字实现类的继承。
  2. 通过继承,子类自动拥有了基类的所有成员(成员变量和方法)
  3. Java只支持单继承,不支持多继承。(一个基类可以可以派生出多个子类,一个子类只能继承一个基类)
  4. 继承是“是”关系!(XX是一种XX)
  5. 构造方法不能直接被继承,要继承父类的构造方法要使用super关键字。

7.访问控制

访问控制.png

对于class的权限控制只能用public或default修饰。(public类可以在任何地方被访问。default类只可以被同一个包内部的类访问)

8.方法的重写

  1. 在子类中可以根据需要从基类中继承来的方法进行重写。
  2. 重写的方法必须和被重写的方法有相同的方法名称、参数列表和返回值。
  3. 重写方法不能拥有比被重写方法更高的访问权限。
  4. 方法的重写(覆盖)发生在子类与父类之间。(方法的重载在同一个类中)
  5. 原则:重写方法时最好copy父类的方法。

9.super关键字

  1. 在Java中可以用super关键字调用基类的成员。
  2. super指向当前对象的父对象。

10.继承中的构造方法

  1. 子类构造的过程中必须调用其基类的构造方法。
  2. 子类可以在自己的构造方法中使用super(参数列表)调用父类的构造方法。
  • 使用this调用本类的另外的构造方法
  • 如果调用super,必须写在子类的构造方法的第一行
  1. 如果子类中没有显示地调用父类的构造方法,则系统默认调用父类的无参的构造方法。(相当于隐含地调用了super())
  2. 如果子类既没有显示地调用父类的构造方法,父类中也没有无参的构造方法,则编译出错。

11.object类

  1. object类为所有类的基类。所有对象(包括数组)都实现这个类的方法。
  2. 如果在类的声明中未使用extends关键字指明其基类,则默认基类为objcet类。

延伸阅读

1.JavaSE学习笔记系列:面向对象(1)

推荐阅读更多精彩内容