首页 > 其他分享 >面向对象(上)01

面向对象(上)01

时间:2022-10-12 15:55:33浏览次数:42  
标签:01 对象 局部变量 调用 面向对象 p1 属性

面向对象(上)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)

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

标签:01,对象,局部变量,调用,面向对象,p1,属性
From: https://www.cnblogs.com/lg369/p/16784779.html

相关文章

  • LcdToos如何实现PX01自动调Flicker及VCOM烧录
    准备工作:LcdTools+PX01点亮需调Flicker的屏;F118Flicker探头,用于自动Flicker校准测量,F118连接PX01上电后,探头屏会提示零点校准,此时需盖住探头窗口再按探头“MODE”按......
  • 01数据库作用
    问题引出概念解决之道数据库简单原理图cmd连接数据库确保MYSQL服务在运行中(netstartmysql)mysql三层结构图数据在数据库中存储的方式(表)SQL语句分类......
  • letcode刷题记录-day01-两数之和
    题目:两数之和描述给定一个整数数组nums 和一个整数目标值target,请你在该数组中找出和为目标值target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输......
  • WebAssembly01--web 编译FFmpeg(WebAssembly版)库
    下载ffmpeg版本注意这里是承接dockerUbuntuwasm环境配置浏览器debugc/c++gitclonehttps://git.ffmpeg.org/ffmpeg.gitffmpegcdffmpeggitbranch-rgitc......
  • 【人脸表情识别】不得不读的重要论文推荐(2019-2020篇)
    上一篇专栏文章我们介绍了2015-2018年基于图片的人脸表情识别代表性方法。本文将延续上一篇的内容,继续盘点2019-2020基于图片的人脸表情识别的代表性工作。作者&编辑|Menp......
  • 【人脸表情识别】情绪识别相关会议、比赛汇总(2018-2020)
    前面专栏中,我们介绍了有关基于图片/视频的人脸表情识别的相关内容,也了解了通过回归的方式来理解表情的方式——基于连续模型的人脸表情识别。在专栏的最后一篇文章中,我们将......
  • 2019 浙江省赛(TeamVP)
    比赛相关信息比赛信息比赛名称:The16thZhejiangProvincialCollegiateProgrammingContest比赛地址:Vjudge全部参赛队伍:292+5*金:9题,1031m银:8题,839m铜......
  • java--面向对象
    面向==对象==OO:OritenedObjectOOP:使用oo的思想进行开发。利用对象实现功能。  面向对象编程。1.封装2.继承3.多态   面向过程c vs 面向对象......
  • 带你走近MISRA C:2012
    汽车软件与C语言  随着软件定义汽车概念的兴起,汽车软件开发的工作量开始呈指数级增加,当前车载软件代码量已经达到1亿-3亿行。这是一个什么概念呢,相当于比Windows系统......
  • WebAssembly01--在JavaScript中读写C/C++内存
    编译选项emccmem.cc-omem.jsmem.cc#include"util.h"intg_int=42;doubleg_double=3.1415926;EM_PORT_API(int*)get_int_ptr(){return&g_int;}EM_PO......