面向对象(上)01

news/2024/5/11 1:20:29/文章来源:https://www.cnblogs.com/lg369/p/16784779.html

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_22270.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

websocket协议详解

websocket是什么? websocket是一种浏览器与服务器进行全双工通信的网络技术,属于 应用层协议。它 基于TCP传输协议,并 复用HTTP 的握手通道,用来弥补HTTP协议在持久通信能力上的不足。 ws 默认端口:80wss 默认端口&a…

Java高并发编程实战7,ConcurrentHashMap详解

一、ConcurrentHashMap详解 1、HashMap 在JDK1.8以前,HashMap是基于数组 链表来实现的,HashMap是一个数组,每个数组元素又是一张链表。 当向HashMap中增加元素时,会先根据此元素Key的hash值计算出该元素将要保存在数组中的下标…

SqlServer2008R2自动删除备份

https://blog.51cto.com/u_15162069/2776830 首先我们打开SqlServer管理工具(SSMS),在左侧目录中找到 管理-->右键维护计划-->新建维护计划双击左侧下方目录:创建 ”清除维护“ 任务双击后打开提示窗口,我们设置 “清除维护” 任务内容:即:在删除本机数据库中,C:\T…

手写数字识别的数据集讲解

CLASS torchvision.datasets.MNIST(root: str, train: bool True, transform: Optional[Callable] None, target_transform: Optional[Callable] None, download: bool False) root (string): 表示数据集的根目录,其中根目录存放MNIST/processed/tra…

【初学者】Vue使用axios向Node.js发起请求以及跨域问题的解决

目录 项目创建 代码 解决跨域问题 几个注意点 运行结果展示 axios官方文档:起步 | Axios 中文文档 | Axios 中文网 项目创建 本文实例用到的两个项目,分别命名为server和vue-axios。 server是node.js项目,创建方式: # 创建…

Codeforces Round #825 (Div. 2)

A. Make A Equal to B Sample input 5 3 1 0 1 0 0 1 4 1 1 0 0 0 1 1 1 2 1 1 1 1 4 1 0 0 1 0 1 1 0 1 0 1 Sample output 1 2 0 1 1 题意: 你有两个长度为n的数组a和b,你可以进行一次操作,将a数组的某个位置的数取反,或者…

LVM与磁盘配额

分区的缺点: 1、一旦建立无法修改 想修改得重新格式化 数据丢失 2、不够灵活 空间只能来自一块硬盘,且必须是连续的空间 3、没有备份冗余功能 需要工程师手动备份如果没有lvm可以下载:yum install lvm2 -y LVM的管理命令 主要命令:LVM为我们提供了逻辑概念上的磁盘,使得文…

usb sop and eop

USB包(packet)由SOP,SYNC,Packet内容和EOP组成. SOP信号-------------瞬态信号 协议中的描述:7.1.7.4.1 The start of a packet (SOP) is signaled by the originating port by driving the D and D- lines from the Idle state to the opposite logic level (K …

实验六:倾斜开关实验

OK,周一周二一共10节课,比较辛苦,昨天下午还有咨询师模拟演练,很累,就早早休息了 今天早上就想写一个实验指导书 也就是现在的实验六 一会十点有《C语言程序设计》的课,不过,今天好在就只有两节课(课时,一次大课2个课时,习惯说2节课) 感觉又是我最喜欢和擅长的C…

JSON——简介

JSON——简介 JSON——基础语法 JSON——json数据与java对象的转换// 将java对象转为json字符串User user = new User(1,"zahngsan","123");// 转换String jsonString = JSON.toJSONString(user);System.out.println(jsonString);// 将json字符串转为jav…

java基于vue+springboot 的体育用品销售购物网站 多商家 nodejs

用户在打开网站之后首先打开的是首页部分,在首页部分可以看到一些推荐的信息 环境需要 1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。 2.IDE环境:IDEA,Eclipse都可以。推荐IDEA; 3.to…

移动端IM产品RainbowChat[专业版] iOS端 v6.0版已发布!

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。 工程开源地址是&…

分治法实现二分查找(python)

问题描述: 改写二分查找算法:设a[1…n]是一个已经排好序的数组,改写二分查找算法: 当搜索元素x不在数组中时,返回小于x的最大元素位置i,和大于x的最小元素位置j; (即返回x的左、右2个元素) 当搜索元素x在…

系动词使役动词

系动词 系动词的作用就是赋值 I am a rabbit 把 a rabbit赋值给i我 我是一只兔子 The rabbit is smart 这兔子是聪明的 smart赋值给兔子 系动词连系的方式,就是简简单单把它前后的概念含义连起来而已 所以系动词又叫连系动词 (Linking Verb) 就是把前后两端连起来(link)就好…

基于侧影轮廓的三维模型构建

建模过程 图像的获取 由于待建模物体具有较多细节,因此选择在同一个方向拍摄两个角度的照片(手机倾斜角大约为60度和45度,如下图所示),以及顶部细节照片,最终拍摄的有效照片为35张。模型构建 新建项目,并导入所有拍摄的照片照片掩饰 可以先采用自动掩饰工具将物体轮廓从…

kotlin koin

介绍 Koin是一个面向Android developer的依赖注入框架使用场景 为什么要用依赖注入框架? 比如我们有一个下载器对象Downloader,需要下面三个对象才能完成构造。但是这个下载器对象在各个活动中使用频繁val executor = Executor() val client = HttpClient() val request = Re…

使用 Zpan 搭建低成本个人私有网盘,还不限速

摘要:本文就介绍一个不限速的低成本个人网盘——ZPan,相较于老牌的私有网盘 OwnCloud 等,Zpan 有一个独有的优势:不限速。本文分享自华为云社区《使用 Zpan 搭建低成本个人私有网盘》,作者: 云存储开发者支…

甘特图:制定项目计划的三个要点

任何事情都要有计划,这样才能保证自己的事情按照既定的目标和轨迹推进 制定计划首先要明确以下三点: 1、目标明确:做这个项目是做什么的要达成什么目标。 2、任务明确:达成这个目标要做哪些事,有具体的实施推进步骤。…

MP-SPDZ详细介绍

基础知识概述 隐私计算底层协议包括两种:其一是基础的加密传输协议,用于信息分发,包括不经意传输、秘密分享、同态加密、零知识证明等。其二是加密计算协议,包括乱码电路、同态加密、零知识证明等。 不经意传输是所有隐私计算协…

python 运行错误收集

目录global全局声明错误 global全局声明错误 SyntaxError: name is_login is used prior to global declaration 解决办法:global is_login 放在 if is_login:的上面 is_login = Falsedef login_auth(func_name):def inner(*args, **kwargs):if is_login:res = func_name(*arg…