类初步认识与对象

一,对于面向对象的认识

Java是一门面向对象的语言,一切都可以称为对象。将一个大象装进冰箱,甭管步骤多复杂,大象便是对象;将牛奶放进冰箱,牛奶便是对象;你我均是对像。

再比如洗一个衣服:需要有的对象是洗衣粉,洗衣机,衣服,这三样是不可少的实体,是对象。

至于洗衣服的过程,有漂洗,脱水等等,这些都不是对象。

洗衣粉,洗衣机,衣服都是以面向对象的方式来进行处理。具体的洗衣服的过程用户不需要去关心。

二,什么是类

类是对一个对象的描述,主要用来描述对象有哪些属性,哪些功能;

比如:洗衣机

属性:品牌,颜色,尺寸等

功能:;洗衣,烘干,定时

如何用java语言来对类进行定义?

//创建类
class ClassName{field   //成员变量method //成员方法
}//class为关键字
//ClassName为类的名字
//{}为类的主题

类中的内容为类的成员,用来描述类·的称为成员变量 或 成员属性,

class WashMachine{public String brand; // 品牌public String type; // 型号public double weight; // 重量public double length; // 长public double width; // 宽public double height; // 高public String color; // 颜色public void washClothes(){ // 洗衣服System.out.println("洗衣功能");
}public void dryClothes() { // 脱水System.out.println("脱水功能");
}public void setTime() { // 定时System.out.println("定时功能");
}
}

类的格式:类名采用大驼峰的形式,即首字母和中间字母大写

三,什么是类的实例化

在java中定义了一个类,相当于在计算机中定义了一个新的类型,与int,double相似。

只不过类是你自定义的类型。

用类的类型创建一个对象的过程就叫类的实例化,在java中用new关键字来实例化对象。

class PetDog {//狗的属性public String name;public String color;//狗的行为public void bark() {System.out.println("狗吠");}
}
public class test {public static void main(String[] args) {PetDog dog = new PetDog(); //通过new实例化对象dog.color = "黄色";dog.name = "小灰灰";}
}

public void bark函数在类中叫成员方法,

注意:new关键字用来创建一个实例化对象;

           使用.访问对象中的属性和方法;

            用一个类可以创建多个实例;

四,this的引用

this引用指向当前对象(成员方法运行时调用成员方法的对象),在成员方法中所有成员变量的操作都是通过this去引用

打印结果是这样,相当于在13行中,仅仅是形参给形参赋值,

但是如果在13行这样改写

this.year = year;

this.month = month;

this.day = day;

这样结果就能成功了,因为this表示对于对象的引用,在成员方法的第一个参数就是this,它表示所指向的对象,this.year表示该对象的year,这样可以区别形参

this引用的特性:

1.this类型:对应类类型引用,即哪个对象调用就是哪个对象的应用类型

2.this只能在成员方法中使用

3.在成员方法中,this只能引用当前对象,不能再引用其他对象

4.this是成员方法第一个隐藏参数,编译器会自动传递,在成员方法执行时,编译器会将调用成员方法对象的应用传递给该成员方法,this负责接收。

五,对象构造及初始化

构造方法是一种特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,在整个对象的生命周期只调用一次。

构造方法的作用就是对对象中的成员初始化,不负责给对象开辟空间

举例:

class Dts{public int year;public int month;public int day;//无参构造方法public Dts(){this.year=19;this.month = 32;this.day=12;}//三个参数的构造方法public Dts(int year,int month,int day){this.year = year;this.month=month;this.day=day;}public void print(){System.out.println(this.year+" "+this.month+" "+this.day);}
}

这两个方法名字相同构成了,方法的重载

如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参

public class Date {public int year;public int month;    public int day;// 无参构造方法--内部给各个成员赋值初始值,该部分功能与三个参数的构造方法重复// 此处可以在无参构造方法中通过this调用带有三个参数的构造方法// 但是this(1900,1,1);必须是构造方法中第一条语句
public Date(){//System.out.println(year); 注释取消掉,编译会失败
this(1900, 1, 1);//this.year = 1900;//this.month = 1;//this.day = 1;
} /
/ 带有三个参数的构造方法
public Date(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}
}

在java中局部变量必须初始化,但是成员变量不用,系统会默认初始化;

六,封装

封装就是将数据和操作方法进行有机结合,隐藏数据的属性和实现细节,仅对外公开接口和对象进行交互

面对对象程序的三大特性:封装,继承,多态。类与对象阶段主要讲的是封装特性

何为封装,简单来说就是套壳屏蔽细节

1.访问限定符

java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,

访问权限用来控制方法或者字段能否在类外使用,而java中提供了四种访问限定符,

说白了就是控制一个成员变量或者成员方法能否在外界使用。

画对号的就是被修饰的成员变量或成员方法可以使用的范围.

一般成员变量要用private修饰,成员方法用public修饰

2.那么什么是包呢?

为了更好的管理,把多个类收集在一起成为一组,成为软件包。就像更好的管理电脑中的文档,将它们分布在不同的文件夹里。

java中引入包,包是对类,接口等封装机制的体现,是一种对类或者接口等很好的组织方式。

一个工程中可以出现相同名称的类,只要他们在不同的包中即可

B,D属于Test.java包中不同的类;

3.导入包中的类

java中给我们提供了很多包为我们使用,可以使用java.util.Date导入java.util这个包中的Date类

public class Testing {//1.手动导入public static void main1(String[] args) {java.util.Date date = new java.util.Date();//得到一个毫秒级的时间戳System.out.println(date.getTime());}//2.使用import语句导入包//在顶部出现import java.util.Date;public static void main(String[] args) {Date data = new Date();System.out.println(data.getTime());}
}
七,static成员

static修饰成员变量:

1.修饰的成员变量成为类变量,不属于某个具体对象,是所有对象所共享的.

2.既可以通过对象访问,也可以通过类名访问,但是推荐通过类名访问

3.类变量储存在方法区

4.类变量生命周期伴随类的一生,随类的加载而创建,随类的卸载而销毁。

5.再进行代码调试的时候,被static修饰的某个成员变量已经不再属于具体的对象

static修饰成员方法:

public class Student{private String name;private String gender;private int age;private double score;private static String classRoom = "Bit306";// ...
}
public class TestStudent {public static void main(String[] args) {System.out.println(Student.classRoom);}
} //编译失败:
Error:(10, 35) java: classRoom 在 extend01.Student 中是 private 访问控制

被static修饰的成员方法成为静态成员方法,也不是某个具体对象拥有的。

一般通过静态方法访问

public class Student{// ...private static String classRoom = "Bit306";// ...//通过静态方法访问public static String getClassRoom(){return classRoom;}
}
public class TestStudent {public static void main(String[] args) {System.out.println(Student.getClassRoom());}
}

静态方法特点:

1.不属于具体对象,是类方法

2.既可以通过对象访问,也可以通过类名访问,但是推荐通过类名访问

3.不能再静态方法中访问任何非静态成员变量

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

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

相关文章

如何在Linux中安装ARM交叉环境编译链

安装ARM交叉环境编译链过程如下: 首先创建一个文件夹如下: mkdir -p Linux_ALPHA/toolcahin然后将arm交叉编译工具链安装包拖到Linux中如下: 先输入mv 拖入的安装包即可 mv /var/run/vmblock-fuse/blockdir/pXeysK/gcc-4.6.4.tar.xz .直接…

进程:守护进程

一、守护进程的概念 守护进程是脱离于终端控制,且运行在后端的进程。(孤儿进程)守护进程不会将信息显示在任何终端上影响前端的操作,也不会被终端产生的任何信息打断,例如(ctrlc).守护进程独立…

【数据结构】哈希

在一个数据序列中查找某一个数据元素,是数据管理时经常涉及的,通常以比较的方式来完成,典型的案例有无序序列的暴力查找(O(N))、有序序列的二分查找(O(logN))、平衡搜索树(O(logN)&a…

融合软硬件串流多媒体技术的远程控制方案

远程技术已经发展得有相当水平了,在远程办公,云游戏,云渲染等领域有相当多的应用场景,以向日葵,todesk rustdesk等优秀产品攻城略地,估值越来越高。占据了通用应用的方方面面。 但是细分市场,还…

试用Claude3

1 简介 好消息是,2024 年 3 月 4 日发布了 Claude3,据传比 GPT-4 更好,snooet 版本可以免费试用,坏消息是我们这儿不能用。 在官网注册时,需要选择国家并使用手机接收短信验证码。而在选项中没有中国这个选项。即使成…

IT外包怎样帮助企业控制成本?

在当今激烈的商业竞争中,企业不仅需要保持创新,还需要有效控制成本。IT外包作为一种管理模式,成为许多企业降低成本的得力工具。究竟IT外包如何帮助企业控制成本呢? 首先,IT外包在减少人力资源成本方面发挥了至关重要的…

【微服务生态】Nginx

文章目录 一、概述二、Nginx 的安装三、常用命令四、Nginx 配置4.1 反向代理配置(1)反向代理实例1(2)反向代理实例2 4.2 负载均衡配置4.3 动静分离4.4 集群配置 五、nginx 原理与优化参数配置 一、概述 本次为简易版,…

3.6 day1 FreeRTOS

1.总结keil5下载代码和编译代码需要注意的事项 注意要将魔术棒的的debug选项中的setting中的flashdownload中的reset and run 勾选上,同时将pack中的enable取消勾选 2.总结STM32Cubemx的使用方法和需要注意的事项 可以通过功能列表对引脚进行设置,并且可…

调用Mybatis plus中的saveBatch方法报找不到表的问题

1.问题现象 在用Mybatis plus开发的项目中,用自带的API批量保存的方法saveBatch操作时,发现报没有找到表的错误。 错误日志截图如下: 表实际是存在的,且发现其他的方法都没有问题,包括save、update等单个的方法&…

springcloud2022 feign超时时间配置

spring:application:name: order-webcloud:openfeign:client:config:default:connectTimeout: 60000readTimeout: 60000 默认connection10秒,readTimeout 60秒

C# Mel-Spectrogram 梅尔频谱

目录 介绍 Main features Philosophy of NWaves 效果 项目 代码 下载 C# Mel-Spectrogram 梅尔频谱 介绍 利用NWaves实现Mel-Spectrogram 梅尔频谱 NWaves github 地址:https://github.com/ar1st0crat/NWaves NWaves is a .NET DSP library with a lot …

计算机mfc140.dll文件缺失的修复方法分析,一键修复mfc140.dll

电脑显示mfc140.dll文件缺失信息时,不必担心,这通常是个容易解决的小问题。接下来让我们详细探究并解决mfc140.dll文件缺失的状况。以下将详述相应的解决方案,从而帮助您轻松克服这一技术难题。通过几个简单步骤,即可恢复正常使用…

elementUI表单验证遇到的问题

1.同一个addForm表单,同样的验证规则,有的输入框在没填写时能够显示红色,有的却毫无反应 解决方案:去elementUI官网看了一下验证表单的规则及属性,第一句就写 Form 组件提供了表单验证的功能,只需要通过 r…

网工内推 | 上市公司售前,大专以上即可,最高15K*13薪,补贴多

01 北京神州新桥科技有限公司 招聘岗位:售前工程师 职责描述: 1、完成项目的售前技术支持工作; 2、 配合销售进行新产品及解决方案的推广工作; 3、 配合销售完成用户的售前技术交流方案准备、现场技术交流、技术方案宣讲等工作…

在PyCharm中使用Jupyter Notebooks实现高效开发

大家好,在数据科学领域,Jupyter Notebooks已成为一种流行的工具,许多专业人士都在使用它来进行数据分析、机器学习等任务。有时,我们希望在更加强大、功能齐全的IDE环境中运行Jupyter笔记本,以提高工作效率和开发体验。…

基于SpringBoot+Vue 的专家医院预约挂号系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

SAP PP学习笔记 - 豆知识08 - 如何修改价格

正常的品目修改用MM02。 新建一个品目之后,啥都没干,现在想修改一下价格,发现MM02 修改不了了。 1,MR21 这里注意 转记日付 要和会计期间一致。 比如我这里的会计期间是 2024/03 有关会计期间,可以参照如下文章&am…

CSS3笔记

1.相同优先级的样式以写在后面的为主。 2.交集选择器,并且 条件挨在一起 p.rich{...} /*p元素class有rich的元素*/ 3.并集选择器,或者 逗号隔开 .class1,class2{...}/*满足其中一个类名都会使用该样式*/ 4.后代选择器 空格 隔开 所有符合的包括孙子及…

JAVA语言基础 JAVA入门

注释 单行注释:用双斜线 // 表示 多行注释:用 /*------------------*/ 表示 文档注释:用 /**-----------------*/ 表示 分隔符 常见的分隔符有:分号 ; 花括号 {} 方括号 [ ] 圆括号 () 空格 圆点 . 在 Java 语言中每一条…

2024_01蓝桥杯STEMA 考试 Scratch 中级试卷解析​​​​​​​

2024_01蓝桥杯STEMA 考试 Scratch 中级试卷解析一、选择题第一题、运行下列哪段程序后,蜜蜂会向上移动?(C ) 第二题、运行以下程序,输入下列哪个数后,角色会说“未通过”?( D) A. 90 B. 85 C. 60 D. 58第三题、运行以下程序后,n 的值为(B )。 A. 17 B…