面向对象(上)01

面向对象(上)01

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

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

Java语言基本元素 : 类和对象

  • 类(Class)和对象(Object)时面向对象的核心概念

​ 类是对一类事物的描述, 是抽象的 , 概念上的定义.

​ 对象是实际存在的该类事物的每个个体 , 因而有称为实例(instance).

  • "万事万物皆对象"

177 . 类的结构:属性和方法

设计类就是设计类的成员.

  • 属性 : Field , 属性 , 成员变量 , 域 , 字段 ;
  • 行为 : Method , (成员)方法 , 函数 ;

178 . 类和对象的创建

类个对象的使用(面向对象思想落地的实现)

  1. 创建类 , 设计类的成员
  2. 创建类的对象
  3. 通过"对象.属性"或"对象.方法"调用对象的结构

类的创建 创建属性和方法

class Person{
    //属性
    String name;
    int age = 18;
    boolean isMale ; 
    //方法
    public void eat(){
        System.out.println("人可以吃饭");
    }
    public void talk(String language){
        System.out.println("人说话,使用的是" + language );
    }
}

对象的创建 调用属性和方法

在测试类中

    Person         p1     =    new Person();
//变量数据类型     变量名		 变量值

Scanner scan = new Scanner(System.in);

创建类的对象 = 类的实例化 = 实例化类

调用对象的结构
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.talk("Chinese");
    } 
}

180 . 类的多个对象的关系

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

181 . 对象的内存解析

主要内存区域

  • 虚拟机栈 : 即 ' 栈 ' , Stack , 用于存储局部变量. 特点:先进后出.
  • 堆 : Heap , 唯一的目的就是存放对象实例.
  • 方法区 : Method Area , 用于存储已被虚拟机加载的类信息,常量,静态变量,即使编译器编译的代码等数据.


其中变量p3不是new出来的结构, 在heap中没有实体, 只是p1把地址值赋值给p3 , p1 和 p3 同时指向 heap中的这个实体, 都可以对其结构进行调用等操作.(有点像文件的两个快捷方式)

182 . 属性与局部变量的对比

类中属性的使用
属性(成员变量) vs 局部变量
  1. 相同点 :

​ 1.1 定义变量的格式 : 数据类型 变量名 = 变量值

​ 1.2 先声明 , 后使用

​ 1.3 变量都有其对应的作用域

  1. 不同点

​ 2.1 在类中声明的位置不同

​ 属性 : 直接定义在类的一对{ } 内

​ 局部变量 : 声明在方法内, 方法形参, 代码块内, 构造器形参, 构造器内部的变量

​ 2.2 关于权限修饰符的不同

​ 属性 : 可在声明时, 知名其权限, 使用权限修饰符.

​ 常用的权限修饰符 : private , public , 缺省 , protected--封装性

​ 局部变量 : 不可以使用权限修饰符.

​ 2.3 默认初始化值的情况

​ 属性 : 类的属性, 根据其类型, 都有默认初始值.

​ 整型(byte, short, int, long) : 0

​ 浮点型(float, double) : 0.0

​ 字符型(char) : 0 (或'\u0000')

​ 布尔型(boolean) : false

​ 引用数据类型(类, 数组, 接口) : null

​ 局部变量 : 没有默认初始值

​ 意味着,我们在调用局部变量之前,一定要显示赋值.

​ 特别的 : 形参在调用时, 我们赋值即可.

​ 2.4 在内存中加载的位置 :

​ 属性 : 加载到堆空间中 (非static)

​ 局部变量 : 加载到栈空间

posted @ 2022-10-12 15:49  大宝贝94106  阅读(63)  评论(0)    收藏  举报