面向对象(上)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 @   大宝贝94106  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示