面向对象的学习

封装

//用来描述一类事物的类,专业叫做:javabean类
//在javabean类是不写main方法的//一个java文件中可以定义多个类,且只能一个类是public修饰,而且public修饰的类名必须成为代码的文件名
://在类中一般无需指定初始化值 存在默认值//引用数据类型:类,接口,数组,String 初始化是NULLd//类名的首字母建议大写,驼峰

封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为

例子:门关门,圆画圆

封装的好处:有很多可以现成的已经封装的类,我们可以直接调用这些现成的类,可以极大方便与我们编写代码

Private关键字

  1. 是一个权限修饰符
  2. 可以修饰成员
  3. 被private修饰的成员只能早本类中才能访问

格式化代码:ctrl + alt + l  (注意需要关闭QQ,才能进行这个操作)

对于私有属性的成员变量往往需要一个set和get搭配使用才能对私有属性的变量进行赋值

下面是一个具体例子:
自己定义一个类(女朋友类型):

public class GirlFriend {//属性private String name;private int age;private String gender;//针对每一个私有变量,都需要提供get和set方法//set方法给成员赋值//get对外提供成员变量的值//作用:给成员变量name赋值public void setName(String n){name = n;}//作用对外提供方属性public String getName(){return name;}//age//setage:给成员变量age进行赋值的//getage对外提供成员变量age的值public void setAge(int a) {if (a >= 18 && a <= 50) {age = a;} else {System.out.println("非法数据\n");}}//get(获取)public int getAge() {return age;}//genderpublic void setGender(String g){gender = g;}public String getGender(){return gender;}}

女朋友类型的TEXT:

public class GirlFrindText {public static void main(String[] args) {//创建女朋友GirlFriend gfl = new GirlFriend();//赋值操作gfl.setName("郑美玲");gfl.setAge(18);gfl.setGender("女");System.out.println(gfl.getName());System.out.println(gfl.getAge());System.out.println(gfl.getGender());}
}

不难发现对于私有私有类型的成员变量我们需要使用类里面的方法进行赋值和得到答案

所以就需要set(赋值)和get(提供值)搭配使用

小结:

1.private关键字是一个权限修饰符

2.可以修饰成员变量

3.被private修饰的成员只能在本类中才能访问

4.针对private修饰的成员变量,如果需要被其他使用,需要提供相应的操作(set和get搭配使用)

5.提供”setXxx(参数)”方法,用于给成员变量赋值,方法用public修饰

6.提供”getXxx(参数)”方法,用于获取成员变量的值,方法使用public修饰

this关键字

成员变量和局部变量

如果我们把变量定义在方法里面 那么这个变量就叫做局部变量

如果我们把变量定义在类里面 那么这个就叫做成员变量

如下面这个:

public class GirlFrind{private int age;//成员变量public void method(){int age = 10;//局部变量System.out.println(age);}
}

这个代码并没有错误:这里的age的值究竟取决于谁呢? 这里讲究一个就近原则,打印的这个age谁离它近 那么这个age就是谁的值,很显然这个age离局部变量age = 10更近,所以这个age的值就是10

如果我就是想要打印成员变量的值 那么我们就需要在打印语句中加上this.age  这个时候打印的就是成员变量的值(后面会讲this在内存中的储存方式

public class GirlFrind{private int age;//成员变量public void method(){int age = 10;//局部变量System.out.println(this.age);}
}

下面这个是使用了this关键字进行的操作:

public void setAge(int age) {if (age >= 18 && age <= 50) {this.age = age;} else {System.out.println("非法数据\n");}
}

这个是将我们接受到的值赋给成员变量age。

小结:1.就近原则

System.out.println(age);

System.out.println(this.age);

构造方法

作用:在创建对象的时候给成员变量初始化的操作。

特点:

  1. 方法名和类名相同,大小写一致
  2. 没有返回值类型
  3. 没有具体得返回值(不能有return 带回结构数据)

执行时机:

  1. 创建对象得时候由虚拟机调用,不能手动调用构造方法
  2. 每创建一次对象,就会使用一次构造方法

犯下的错误:对于set类函数我们使用这个方法的时候必须要使这个方法的类型为void \

然后我们使用get类函数我们需要将这个方法的类型设置为变量自己的类型

System.out.println(stu1.setAge(19));

这个输出函数里面的类型是void类型,我竟然将这个函数里面的直接放在了输出函数里面了
 

当我们没有构造方法的时候系统会自动给我们初始化一个构造方法(这个构造方法没有含有任何的参数和变量)

 当我们定义了构造方法,系统将不再提供默认的构造方法

当我们将自定义的无参构造的构造方法给注释掉后,然后再在主类中的main的参数去掉后,就会发现程序已经报错了,所以当我们当我们定义了构造方法,系统将不再提供默认的构造方法。   所以这个我们自己定义一个无参构造是很有必要的。

构造方法的重载:

带参构造方法,和无参构造方法,两者方法名相同,但是参数不同,这就叫做构造方法的重载  (有点类似与C++里面的sort函数可以含多个变量)

推荐使用方法:

无论是否使用,都手动书写参数构造方法,和带全部参数的构造方法

小结:

  1. 创建对象的时候,由虚拟机自动调用,给成员变量进行初始化的
  2. 无参的构造方法:初始化对象的时候,成员的数据均采用默认值
    有参的构造方法:在初始化对象的时候,可以为对象进行赋值
  3. 任何类定义出来,默认就自带了无参构造器,写不写都有

 

标准的javabean类

用来描述一类事物的类,专业叫做:javabean
1.类名需要见民知意

2.成员变量需要使用private修饰

3.提供至少两个构造方法:第一个无参构造方法,第二个有参构造方法

4.成员方法:提供每一个成员变量对应的setXxx(),getXxx()  如还有其他行为也要写上

除此之外我们可以使用两个快捷方式生成标准的javabean

第一个就是

第一个就是:alt + insert
或者:alt + fn + insert

除了这个我们还可以使用一个插件自动生成标准的javabean,只需要在鼠标右键进行选择就可以了 或者是alt + shift + ' .'  这个样也可以生成一个标准的javabean

对象储存图

Java内存分配:1.栈  2.堆  3.方法区  4.本地方法区  5.寄存器

一个对象的内存图:就以student s = new Student();为例

电脑会做这些事情:

  1. 加载class文件
  2. 申明局部变量
  3. 在堆内存中开辟一个空间
  4. 默认初始化
  5. 显示初始化
  6. 构造方法初始化
  7. 将堆内存中的地址赋给左边的局部变量

     

 

我们需要知道的是:当有new这个关键字时,就意味着在堆内存中开辟了一块内存,这个内存会从方法区提取相关的模板然后并在相依的地址(名字)+ ‘.’地址所指向的属性(也就是具体的数据)   所以我们可以总结出一点就是每当我们看到一个new的时候就代表会在对区域开辟一个全新的空间(这也就意味这有几个对象)

变量名(相当于是一个地址):会被储存在栈内存中,当代码运行到这一行的时候,电脑就会循着地址在堆中找到相应的属性(具体数据)

 

可以看到这个代码只出现了一次new就说明了只有一个对象的内存被存放到了堆内存,而

Student stu2 = stu1    stu2和stu1都是指向了一个堆内存,当我们将stu1 赋值为NULL,这个时候stu1什么都不会指向,stu1就成为垃圾。

 基本数据类型和引用数据类型

基本数据类型:在变量存储的是真实的变量值,存储在栈内存

而引用数据类型在栈内存中存储的是一个地址值,真正的值是存放在堆内存中

如Student s = new Student();这个s就是引用数据类型(使用其他空间的数据)

数组也是一个引用数据类型。

 

基本数据类型:数据值是存贮在自己的空间中
特点;赋值给其他变量,也是赋得真实得值

引用数据类型;数据值是贮存在其他空间,通过调用地址来获取值。

This的内存原理:

This的本质:代表所在方法调用者的地址值,且这个储存在栈内存中

其作用:就是区分局部变量和成员变量的

成员变量:类中方法外的变量

局部变量:方法中的变量

 

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

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

相关文章

CleanMyMac X 4.15.1 for Mac 最新中文破解版 系统优化垃圾清理工具

CleanMyMac X for Mac 是一款功能更加强大的系统优化清理工具&#xff0c;相比于 CleanMyMac 4.15.1来说&#xff0c;功能增加了不少&#xff0c;此版本为4.15.1官方最新中英文正式破解版本&#xff0c;永久使用&#xff0c;解决了打开软件崩溃问题&#xff0c;最新版4.15.1版本…

MYSQL数字函数实操宝典:场景化SQL语句一网打尽

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 MYSQL数字函数&#xff1a;不可不知的数据处理利器 文章目录 Part 1: 准备 &#x…

3723. 字符串查询:做题笔记

目录 思路 代码 注意点 3723. 字符串查询 思路 这道题感觉和常见的前缀和问题不太一样&#xff0c;前缀和的另一种应用&#xff1a;可以统计次数。 这道题我们想判断一个单词的其中一段子序列A是否可以通过重新排列得到另一段子序列B。 我看到这道题的时候想着可能要判…

资讯头条P3自媒体搭建

自媒体素材管理与文章管理 一.后台搭建 1.1 搭建自媒体网关 导入网关模块>>>在网关模块的pom.xml文件中添加该子模块>>>刷新maven <modules><module>heima-leadnews-app-gateway</module><!--新增--><module>heima-leadnew…

大学生租房系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 1. 系统功能…

【ppt技巧】给PPT添加打开加密密码的方法

PPT文件制作完成之后&#xff0c;为了保证内容泄露或者修改&#xff0c;我们可以给PPT文件设置一个打开密码来保护文件&#xff0c;今天分享PPT加密方法给大家。希望能够帮助大家保护好自己的PPT文件。 如果想要其他人需要输入正确的密码才能够打开文件查看并编辑&#xff0c;…

如何在CentOS使用Docker搭建Rsshub服务并实现无公网IP远程访问

文章目录 1. Docker 安装2. Docker 部署Rsshub3. 本地访问Rsshub4. Linux安装Cpolar5. 配置公网地址6. 远程访问Rsshub7. 固定Cpolar公网地址8. 固定地址访问 Rsshub是一个开源、简单易用、易于扩展的RSS生成器&#xff0c;它可以为各种内容生成RSS订阅源。 Rsshub借助于开源社…

Python-VBA编程500例-024(入门级)

字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有&#xff1a; 1、文本编辑及处理&#xff1a;在编写或编辑文本文件时&#xff0c;如使用文本编辑器或文本处理器&#xff0c;经常需要处理字符串并确定其在文件中的行数。这…

C#开发者必备!快速掌握onnxruntime实现YOWOv2视频动作检测技术!

C#开发者必备&#xff01;快速掌握onnxruntime实现YOWOv2视频动作检测技术&#xff01; 目录 介绍 效果 模型信息 项目 代码 Form1.cs YOWOv2.cs 下载 介绍 YOWOv2: A Stronger yet Efficient Multi-level Detection Framework for Real-time Spatio-temporal Action…

持续集成流水线介绍(CI)

目录 一、概述 二、持续集成的典型操作流程 2.1 概述 2.2 持续集成的操作流程图 2.3 持续集成关键流程说明 三、构建持续集成流水线的方式 3.1 依托云厂商能力 3.2 采用开源产品 3.3 企业自研 四、构建持续化集成流水线 4.1 基于GitHub的持续集成流水线&#xff08;公…

【氮化镓】GaN器件中关态应力诱导的损伤定位

概括总结&#xff1a; 这项研究通过低频1/f噪声测量方法&#xff0c;探究了在关态&#xff08;OFF-state&#xff09;应力作用下&#xff0c;AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;中由应力引起的损伤的定位。研究中结合了电致发光&#xff08;EL&#xf…

如何合理利用chatgpt写高质量论文,10分钟速成(四)

演示站点&#xff1a; https://www.cnsai.net/ 论文模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、文章结构剖析 如果我们经常去写文章或者是去看别人的文章&#xff0c;你会发现文章分为以下几部分 标题大纲前言/导语正文&#xff08;不同的结构&#xff09;结尾呼…

Linux查看重启时间,关机时间,运行时长的指令

Linux查看重启时间&#xff0c;关机时间&#xff0c;运行时长的指令 查看上次启动时间查看系统重启时间查看关机时间查看运行时长 这里测试环境为Ubuntu 16.04 查看上次启动时间 who -b可以通过who --help查看who指令的更多功能 查看系统重启时间 可以通过下面的方式来进行…

1. Java概述

文章目录 1.Java语言概述1.1 Java介绍1.1.1 软件开发概述1.1.2 计算机语言1.1.3 Java 简史1.1.4 Java 技术体系平台1.1.5 Java在各领域的应用1.1.6 Java语言特点1.1.7 Java核心机制一-Java虚拟机1.1.8 Java核心机制二-垃圾回收1.1.9 Java开发工具 1.2 Java环境搭建1.2.1 JDK、J…

农村分散式生活污水分质处理及循环利用技术指南

标准已完成意见征集&#xff1a; 本文件给出了农村分散式生活污水分质处理及循环利用的总则、污水收集、污水分质处理、资源化利用、利用模式、运维管理等的指导。 本文件适用于农村分散式生活污水分质处理及循环利用的设施新建、扩建和改建工程的设计、施工与运维。 注:本文件…

算法系列--动态规划--回文子串系列

&#x1f495;"我们好像在池塘的水底&#xff0c;从一个月亮走向另一个月亮。。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–动态规划–回文子串系列 今天为大家带来的是算法系列--动态规划--回文子串系列(1),本文重点掌握如何快速判…

Echarts地图之——如何给地图添加外边框轮廓

有时候我们希望给地图外围加一圈边框来增加美感 但实际情况中&#xff0c;我们需要把国界的边框和各个省份属于国界的边框相吻合&#xff0c;否则就会造成两者看起来是错位的感觉 这就需要我们把echarts registerMap的全国省份json和国界边框json的坐标相一致。 这个json我们可…

佳能机械制造将莅临2024第13届生物发酵产品与技术装备展

参展企业介绍 过滤与分离设备专业制造商 •碟式离心机及机组模块、系统 •卧式螺旋卸料沉降离心机及系统 江苏佳能机械制造有限公司位于中国“龙虾之都”——江苏盱眙&#xff0c;地处淮安西南部&#xff0c;淮河下游&#xff0c;洪泽湖南岸&#…

网络七层模型之表示层:理解网络通信的架构(六)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【LeetCode热题100】124.二叉树的最大路径和(二叉树)

一.题目要求 二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root …