Java基础——面向对象基础(一)

文章目录一、Java面向对象学习的三条主线(第4-6章):二、面向过程vs面向对象:三、使用"面向对象分析方法"分析问题的思路和步骤:四、面向对象的两个要素:4.1、设计类,其实就是设计类的成员4.2、类和对象的使用(面向对象思想落地的实现)五、对象的内存解析5.1、JVM内存详细图5.2、对象的内存解析一、Java面向对象学习的三条主线(第4-6章):Java类及类的成员:属性、方法、构造器;代...

Java基础——面向对象基础(一)

一、Java面向对象学习的三条主线(第4-6章):

  • Java类及类的成员:属性、方法、构造器;代码块、内部类
  • 面向对象的三大特征:封装性、继承性、多态性、(抽象性)
  • 其他关键字:this、super、static、final、abstract、interface、package、import 等
  • 二、面向过程 vs 面向对象:
  • 面向过程:强调的是功能行为,以函数为最小单位,考虑 "怎么做"
  • 面向对象:强调的是具备了功能的对象,以类/对象为最小单位,考虑 "谁来做"
  • 三、使用"面向对象分析方法"分析问题的思路和步骤:
  • 根据问题需要,选择问题所针对的 “现实世界中的实体”;
  • 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了 “概念世界中的类”;
  • 把抽象的实体用计算机语言进行描述,形成 “计算机世界中类的定义”;
    (即,借助某种程序语言,把类构造成计算机能够识别和处理的数据结构)
  • 将 “类实例化成计算机世界中的对象”。对象是计算机世界中解决问题的最终工具
  • 四、面向对象的两个要素:
  • 类:对一类事物的描述,是抽象的、概念上的定义
  • 对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)
    • 面向对象程序设计的重点是 "类的设计"
    • 设计类,就是设计 “类的成员”
    4.1、设计类,其实就是设计类的成员4.2、类和对象的使用(面向对象思想落地的实现)
  • 创建类,设计类的成员【主要工作】
  • 创建类的对象
  • 通过 “对象.属性” 和 “对象.方法” 调用对象的结构
  • 代码实例测试:

    //测试类public class PersonTest {public static void main(String[] args) {//创建对象(实例化一个对象)Person p1 = new Person();//调用属性p1.name = "Tom";p1.isMale = true;System.out.println(p1.name);//调用方法p1.eat();p1.sleep();p1.talk("Chinese");//***********************************Person p2 = new Person();System.out.println(p2.name);//***********************************Person p3 = p1;System.out.println(p3.name);p3.age = 10;System.out.println(p1.age);}}//自定义的类:人类class Person{//属性(成员变量,field,域、字段)String name;int age = 1;boolean isMale;//方法(成员方法,method,函数)public void eat(){System.out.println("人能吃饭");}public void sleep(){System.out.println("人能睡觉");}public void talk(String language){System.out.println("人能说话,使用的语言是:"language);}}
    五、对象的内存解析

    【对象的内存解析,类似于数组的内存解析(都是引用类型)】

    5.1、JVM内存详细图

    在这里插入图片描述
    【目前只关注圈起来的三部分;其中主要关注:虚拟机栈(Stack)、堆(Heap)】

  • 虚拟机栈:存储局部变量
  • 堆:存放对象实例
  • 方法区:类信息、常量、静态变量
  • 5.2、对象的内存解析

    在这里插入图片描述
    【同一个类,实例化出来的多个对象,各自拥有一套成员(非static的),彼此之间互不干扰,(即,修改了对象a1的属性,不会导致对象a2的属性被修改)】

    源文地址:https://www.guoxiongfei.cn/csdn/1523.html