1.面向对象三大特征:(重要)

- 封装:所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只对可信的类或对象操作,对不信的进行信息隐藏。也就是操作对外部而言不可见。(保护性)

- 继承:继承是指这样的一种能力:他可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能实现扩展。(重用性)

- 多态:所谓多态就是指一个类实例的相同方法在不同情形下有不同的表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。(使用多态可以得到良好的设计)

面向对象编程最大的特征是可以进行现实生活的抽象。

2.类与对象的定义与使用

2.1 基本概念
所谓类就是共性的概念,而对象指的是一个具体的,可以使用的事物。

首先产生类,而后产生对象(类是生产对象的蓝图)。

对象的所有行为,一定在类中进行了完整的定义。

类中的组成:
1.方法(操作的行为)
2.属性(变量,描述每个对象的具体特点)

2.2 定义与使用

定义一个类 的语法如下:

class 类名称{
       属性1;
       属性2;
       属性n...;
       
      方法1(){ }
      方法2(){ }
      方法n (){ }
}

一个完整类的定义的方法不再由主类直接调用,而需要由对象调用。
有了类,就可以直接定义对象了:

生产对象的语法如下:

类名称 对象名称 = new 类名称();

2.3对象内存分析

我们可以简单地将Java中的内存区域分为栈内存和堆内存两块区域(实际Java内存区域的划分是比较复杂的)

  1. 栈内存(虚拟机局部变量表): 存放的是局部变量。
  2. 堆内存:保存的是真正的数据。即对象的属性信息。

下面来分析一段代码:

class Person {
       String name;
       String age;
}
pubilc class Test{
     public static void main(){
           Person per = new Person();
           per.name = "张三";
           per.age = 18;
     }
}

mian方法中的第一行代码:Person per = new person(); 一旦出现关键词 new ,表面在堆上分配了内存并且产生了Person类的对象per引用这部分内存。

接下来的俩句代码:

per.name = "张三";
per.sge = 18;

通过per引用设置堆中的属性值。

注意:对象必须在实例化后调用,否则会出现NullPointException(运行时错误),编译的时候不会出错。