Java基础四--面向对象基础

如果你现实中没有对象,至少你在java世界里会有茫茫多的对象,听起来是不是很激动呢?

对象

对象是类的一个实例,有状态和行为。

我们所在的世界,周围的一切事物都是对象,车、人、狗等等。这些对象都有自己的状态和行为。

我们用一只猫来举例,它的状态有:名字、品种、颜色,行为由:跑,叫,睡觉。

软件的对象也有状态和行为。软件对象的状态称为属性,行为通过方法体现。

那么什么是面向对象?

关注现实存在的事物的各方面的信息,从对象的角度出发,根据事物的特征进行程序设计


类是一个模子,确定对象将会拥有的特性(属性)和行为(方法)

类的特点:

  • 类是对象的类型
  • 具有相同属性和方法的一组对象的集合

对象是类的实例表现

属性

对象具有的静态特征。对象“有什么”。

方法

对象具有的各种动态行为。对象“能做什么”。

变量

一个类中可以包含以下类型变量:

  • 局部变量

    在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都在方法中,方法结束后,变量就会自动销毁

  • 成员变量

    成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问

  • 类变量

    类变量也声明在类中,方法体之外,但必须声明为static类型


类和对象的关系

类是抽象的概念,仅仅是模板

对象是一个你能看得见,摸得着的具体实体

类是对象的类型

对象是特定类型的数据


对象实例化

实例化对象的过程可以分为两部分:

- 声明对象 Cat one

- 实例化对象 new Cat()

- Cat one = new Cat();//类名 对象名 = new 构造方法();

声明对象,就是在内存的栈区域开辟一块空间,此时这个空间里的值是空的

实例化对象,在内存的堆区域开辟一块空间,完成初始化操作

对象实例化1

经过赋值操作,我们将堆空间中的地址,传递到了栈当中的内存空间里。此后,我们就可以通过对象名去调用对象的属性和方法了。

对象实例化2

每次 new 对象就会产生新的实例化方法

- Cat one = new Cat();

- Cat two = new Cat();

对象实例化3

多个对象也可以指向同一块实例化空间

- Cat one = new Cat();

- Cat two = one;

对象实例化4

对象实例化

对象必须被实例化之后才能使用

对象间的引用传递,实际上传递的是堆内存空间的使用权


构造方法

  • 构造方法与类同名且没有返回值
  • 只能在对象实例化的时候调用
  • 一个类可以有多个构造方法—构造方法重载
  • 当没有指定构造方法时,系统会自动调用无参的构造方法
  • 当有指定构造方法,无论是有参、无参的构造方法,都不会自动调用无参的构造方法。
  • 构造方法不可被重写

this 关键字

this: 当前对象的默认引用

this 的使用

- 调用成员属性,解决成员属性和局部变量同名冲突

1
2
3
4
5
6
String name;
int age;
public Cat(String name){
this.name = name;
System.out.println("我是单参构造");
}

- 调用成员方法

1
2
3
4
5
6
7
public void run(){
this.eat();
System.out.println("小猫快跑");
}
public void eat(){
System.out.println("猫吃鱼");
}

- 调用重载的构造方法

1
2
3
4
5
6
7
8
public Cat(){
System.out.println("我是无参构造");
}
public Cat(String name){
this();//通过this()调用构造方法,必须放在方法体内的第一行。
this.name = name;
System.out.println("我是单参构造");
}

源文件声明规则

当在一个源文件中定义多个类,并且还有 import 语句和 package 语句时,要特别注意这些规则

  • 一个源文件中只能有一个 public 类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和 public 类的类名保持一致。例如:源文件中 public 类的类名是 Employee,那么源文件应该命名为 Employee.java
  • 如果一个类定义在某个包中,那么 package 语句应该在源文件的首行
  • 如果源文件包含 import 语句,那么应该放在 package 语句和类定义之间。如果没有 package 语句,那么import 语句应该在源文件中最前面
  • import 语句和 package 语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明
-------------本文结束感谢您的阅读-------------

本文标题:Java基础四--面向对象基础

文章作者:Cui Zhe

发布时间:2018年10月13日 - 18:10

最后更新:2018年10月14日 - 08:10

原始链接:https://cuizhe1023.github.io/2018/10/13/Java基础四/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。