Java学习"面向对象"之(类与对象)

一、

1."面向对象"学习的三条主线:

①.Java类及类的成员:属性、方法、构造器;代码块、内部类
②.面向对象的三大特征:封装性、继承性、多态性、(抽象性)
③.其他关键字:this、 super、 static、 final 、abstract 、interface 、package、 import等.

2.面向对象和面向过程:

①.面向过程:强调的是功能行为,以函数为最小的单位,考虑怎么做。

②.面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

举例对比:人、冰箱、大象

3.完成一个项目的思路:
①.根据问题需要,选择问题所针对的现实世界中的实体
②.从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类
③.把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义
④.将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。

4.面向对象中两个重要概念:

  • ①类:对一类事物的描述,是抽象的、概念上的定义。
  • ②对象:是实际存在的该类事物的每个个体,因此也被称为实例(instance)。

面向对象类的设计重点是类的设计。
设计类,就是设计类的成员。

二者关系:对象是由类派生(new)出来的。

5.面向对象(思想落地实现)的规则一:▲▲▲

①.创建类,设计类的成员。
②.创建类的对象
③.通过:“对象.属性”或“对象.方法”,调用对象的结构。

其中,几个概念的使用说明:

属性 = 成员变量 = field = 域、字段
方法 = 成员方法 = 函数 = method
创建类的对象 = 类的实例化 = 实例化类

6.对象的创建与对象的内存解析
①.典型代码:

Person p1 = new Person();
Person p2 = new Person();
Person p3  = p1;//没有新创建一个对象,共用一个堆空间中的对象实体

说明:

如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性.(非static的)
意味着:如果我们修改一个对象的属性A,不影响另外一个对象属性A的值。

②.举例:

Person p1 = new Person();
p1.name = "Tom";
p1.isMale = true;
Person p2 = new Perrson();
system.out.println(p2.name);//null
Person p3 = p1;
p3.age = 10;

内存解析:


Java学习
内存解析

7.JVM内存结构

①.编译完源代码后,生成一个或多个字节码文件。

使用JVM中的类的加载器和解释器对生成的字节码文件进行解释运行。
意味着:需要将字节码文件对应的类加载到内存中,涉及到内存解析。

<>
虚拟机栈:即为平时提到的栈结构。我们将局部变量存储在栈结构中。
堆:将new出来的结构(比如:数组、对象)加载在堆空间中。补充:对象的属性(非static的)加载在堆空间中。
方法区:类的加载信息、常量池、静态域

8.匿名对象:
理解:我们创建的对象,没有赋给一个变量名。即匿名对象。
特征:匿名对象只能调用一次。
举例:

        phone p1 = new phone();
        p1.sendEmail();
        p1.playGame();
        //匿名对象
        new phone().price = 999;
        new phone().showPrice();//0.0

实际应用:

phoneMall mall = new phoneMall();
mall.show(new phone());//相当于将new phone()的地址值给p2变量0
//其中
class phoneMall{
   
   public void show(phone p2) {//p2相当于一个局部变量
       p2.sendEmail();
       p2.playGame();  
   }
}

9.理解“万事万物皆对象”

①在Java语言范畴中,我们都将功能结构等封装在类中,通过类的实例化,来调用具体的功能结构。
* Scanner、String等
* 文件:File
* 网络资源:URL
②涉及到Java语言与前端的Heml、后端的数据库交互式,前后端的结构在Java层面交互时,都体现为类、对象。

你可能感兴趣的:(Java学习"面向对象"之(类与对象))