Java学习笔记(三):面向对象

文章目录

  • 1.类与对象
    • 1.1 定义构造器
    • 1.2 定义成员变量
    • 1.3 定义方法
    • 1.4 static关键字
  • 2. 面向对象的三大特征:封装、继承和多态
    • 2.1 封装
    • 2.2 继承
      • 2.2.1 子类重写父类的方法
    • 2.3 多态

1.类与对象

类(class)和对象(object, 也被称为实例 instance)是 java面向对象的核心,可以把类理解成某种概念,对象理解为一个具体存在的实体。也就是说,日常说的人,其实都是人的实例,而不是人类。

定义类的简单语法:

[修饰符] class 类名
{
	零到多个构造器定义..
	零到多个成员变量...
	零到多个方法...
}

修饰符可以是 public、final、abstract,或者完全省略。
对一个类而言,可以包含最常见的成员:构造器、成员变量和方法。各成员之间可以互相调用。

static修饰的成员不能访问没有 static修饰的成员。

1.1 定义构造器

构造器用于构造该类的实例,Java语言通过 new关键字来调用构造器,从而返回该类的实例。
构造器是一个类创建对象的根本途径,一般系统会为一个类提供一个默认的构造器,一旦程序员为一个类提供了构造器,系统将不再提供构造器。
定义构造器的语法格式:

[修饰符] 构造器名(形参列表)
{
	//零条到多条可执行语句组成的构造器执行体
}

构造器既不能定义返回值类型,也不能使用 void声明构造器没有返回值。实际上,类的构造器是有返回值的,当使用 new关键字来调用构造器时,构造器返回该类的实例,即构造器的返回值类型总是当前类。

1.2 定义成员变量

成员变量(field)用于定义该类或该类的实例所包含的状态数据。
定义成员变量的语法格式:

[修饰符] 类型 成员变量[=默认值];

修饰符可以省略,也可以是 public、protected、private、static、final,public、protected、private三者最多只能出现一个,与 static、final 共同组合修饰成员变量。

1.3 定义方法

定义方法的语法格式:

[修饰符] 方法返回值类型 方法名(形参列表){
 // 由零条或多条可执行语句组成的方法体
}

修饰符可以省略,也可以是 public、protected、private、static、final、 abstract。

1.4 static关键字

static英文直译是静态的意思,其真正的作用就是用于区分成员变量、方法、内部类、初始化块这四种成员到底属于类本身,还是属于实例。如果有 static修饰的成员就属于类本身,没有 static修饰的成员属于该类的实例。

2. 面向对象的三大特征:封装、继承和多态

2.1 封装

封装 (Encapsulation)是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。

2.2 继承

继承是实现软件复用的重要手段,Java 的继承具有单继承的特点,每隔子类只有一个直接父类。

Java的继承通过 extends关键字来实现,实现继承的类被称为子类,被继承的类被称为父类,有时也被叫做基类或超类。

2.2.1 子类重写父类的方法

子类扩展了父类,子类是一个特殊的父类。

大多数时候,子类总是以父类为基础,额外增加新的成员变量和方法,但是有时候子类也需要重写父类的方法。例如鸟类都能飞,但是鸵鸟不能飞,鸵鸟子类就需要重写鸟父类的 fly()方法。
这种子类包含与父类同名方法的现象叫做方法重写(Override),也被称为方法覆盖。

重写遵循的原则: “两用两小一大”。

“两同”: 方法名相同、形参列表相同。
“两小”: 子类方法的返回值类型应比父类方法返回值类型更小或者相等,子类方法声明抛出的异常类应比父类方法声明的异常更小或者相等。
“一大”: 子类方法的方法权限比父类方法权限更大或者相等

2.3 多态

Java 引用变量有两个类型,一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态(Polymorohism)。

编写 java代码时,引用变量只能调用声明该变量时的所用类里包含的方法,例如通过 Object p = new Person() 代码定义了一个变量p,则这个 p只能调用 Object 类的方法,而不能调用运行时类型所定义的成员变量。

你可能感兴趣的:(java,学习,笔记)