Java-类与对象

Java,从一开始学习这门技术,我们就被注入了一个概念——“Java是一门面向对象编程语言。”是的,Java之所以简单而具有优势,就是因为面向对象所带来的方便。这种方式免去了C++ 中反复而难以理解的指针和多继承,“可以让程序员以优雅的思维方式进行复杂的编程”。而这之中最为核心也是最基础的部分就是类与对象。
一、对象
作为Java语言中最基础的东西,我们有必要了解一下对象的概念。实际上生活中我们接触的所有东西都可以被称作为一个对象。比如你正在使用的浏览这篇文章的电子设备、你手边正在被你使用的那个鼠标、我正在敲的键盘等,全都是对象。对象不是一个笼统的,类似于“桌子”、“椅子”这种代表一类事物的概念,而是类似于“那张桌子”、“这把椅子”这样的具体的某一个事物。这就是对象。

二、类
类相当于之前我们所说的那个“笼统的概念”,就是具有共同特征的某一类东西。比如“桌子”、“电脑”、“显卡”等。而类和对象的关系也很简单——类是模板,对象是实物。

类的格式如下:

public class 类名(){//属性访问修饰符 数据类型 变量名;//方法访问修饰符 返回值类型 方法名(数据类型 参数名,...){}}

三、类的属性和方法
1、属性

类的属性就是我们在描述某个东西时所指出的这个东西的特点。

比如我们描述笔记本电脑,那么我们基本上会用“品牌”、“颜色”、“内存大小”、“显卡类型”等几个特点来描述它。那么如果这个时候我们把“笔记本电脑”当做一个类的话,那么它的属性就是刚才我们所指出的那几个特点。

2、方法

所谓方法,就是指一类事物的用途、行为或者功能。

还是以刚才我们说的笔记本电脑为例。那么笔记本电脑的用途比如“写文章”、“学习”、“玩LOL”等,就是笔记本电脑这个类的方法。我们可以在程序中去调用这些方法以达到我们的目的。

3、构造方法

在Java中,任何变量在被使用前都必须先设置初值。Java提供的为类的成员变量赋初值的专门方法,就是构造方法。构造方法会在对象被实例化的时候被调用。

注意:构造方法名必须与类名完全一致;构造方法没有返回值类型,连“void”也没有;如果你没有在一个类中定义构造方法,java会自动提供一个没有任何形参的默认的构造方法。

这里我们定义一个简单的“学生类”

public class Student{private String name;//姓名属性,私有private int age;//年龄属性,私有private int score;//学分属性,私有/***构造函数,读取姓名和年龄属性*/public Student(String name,int age){this.name = name;this.age = age;}/***定义一个学习方法。每学习一次学分加1*/public void study(){score++;System.out.println(name+"正在学习中,学分是"+score);}
}

这就是一个简单的类了。

四、方法重载
有些时候我们可以发现在特定的情况下有些对象会有一些其他对象没有的属性,这就导致有些类没办法通用。而再重新为这仅有的几个对象建立一个类会比较麻烦,这种情况我们就需要用到方法的重载。

1、构造方法的重载

中国古典名著《西游记》中的孙悟空是从石头里跳出来的,而其他所有人都是有父有母。这种情况下我们可以视为孙悟空的属性和其他人物不一样,这就需要在实例化孙悟空这个对象时加入一个不一样的参数。

2、普通方法的重载

每个人都需要吃东西,但是早中晚三餐吃的东西不一样。我们就需要对“吃”这个方法进行重载。

3、方法重载的条件:

方法名必须要完全一致;参数不同(个数、类型、顺序至少有一个不同)。

五、this关键字
1、当参数名和属性名相同的时候,Java会采用就近原则优先使用参数;如果要区分开来,那么可以使用this来区分,加上this.的表示属性,否则表示参数。

2、this(参数值,…);调用当前类中对应参数的构造方法。

注意:this表示当前调用的方法的对象。谁在调用方法,那么方法中的this就表示该对象。

我们现在看一下如何实现方法的重载

public class Student{private String name;//姓名属性,私有private int age;//年龄属性,私有private int score;//学分属性,私有/***构造函数,读取姓名和年龄属性*/public Student(String name,int age){this.name = name;this.age = age;System.out.println("有参数的构造方法");}/***构造方法的重载*/public Student(){System.out.println("没有参数的构造方法");}/***定义一个学习方法。每学习一次学分加1*/public void study(){score++;System.out.println(name+"正在学习中,学分是"+score);}public void study(String book){System.out.println(name+"正在学习《"+book+"》中的内容");
}
}

定义一个用于运行的有主函数的类

public class manager{public static void main(String[] args) {Student stu = new Student("张三",18);//实例化一个对象for(int i=0;i<=5;i++){stu.study();//学习六次}stu.study("数字电路与模拟电路");//学习方法的重载}
}

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

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

相关文章

Hibernate学习笔记(一)

####1.1Hibernate框架的学习路线第一天&#xff1a;Hibernate的入门&#xff08;Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD&#xff09;第二天&#xff1a;Hibernate的一级缓存、其他的API第三天&#xff1a;Hibernate的一对多配置、Hibernate的多对多的配置…

Java-进阶:Java-File--IO—1

#目录 一、File 类 二、IO流 三、字节输出流 四、字节输入流 五、字节流文件复制 六、字符输出流 七、字符输入流 八、字符流复制文本文件 ##一、File 类 ###1. 概述 文件 和 目录路径名 的抽象表达形式 Java中把文件或者目录&#xff08;文件夹&#xff09;都封装成 File对象…

北理工爬虫课程学习记录

Requests post方法如果提交字典会被存到form下&#xff0c;如果直接提交字符串&#xff0c;会被存到data下 put方法和post类似&#xff0c;只不过他会覆盖原始数据 ###各个方法的使用### 13个 访问参数 url修改的字段 //模拟浏览器进行访问 //模拟不同的IP地址对这个网站进行访…

Java-进阶:Java-File--IO—2

目录 一、转换流 二、字节缓冲流 三、字符缓冲流 四、序列化流与反序列化流 五、打印流 六、标准输入、输出流 七、IO流总结 一、转换流 1. OutputStreamWriter 类 &#xff08;1&#xff09; 概述 java.io.OutputStreamWriter继承 Writer类&#xff1b;就是一个字符输出流…

Hibernate学习笔记(二)

Hibernate概述&#xff1a; 什么是Hibernate:是一个持久层的ORM的框架 什么是ORM: ORM:对象关系映射,指的是将一个java中的对象与关系型数据库中的表建立一种映射关系&#xff0c;从而操作对象就可以完成数据库的相关操作为什么学习Hibernate 简化JDBC的开发 性能很好Hibernate…

Java-进阶:多线程1

目录 一、概述 二、Thread 类 三、创建线程&#xff1a;继承 Thread 类 四、创建线程&#xff1a;实现 Runnable 接口 五、线程优先级 六、线程的生命周期 七、同步代码块 一、概述 1. 进程和线程 进程&#xff1a;进程指正在运行的程序。线程&#xff1a;线程是进程中的一个…

Struts2学习笔记(一)--入门常见配置

Struts2框架的学习路线 l 第一天&#xff1a;Struts2的概述、Struts2的入门、Struts2常见的配置、Struts2的Action的编写 l 第二天&#xff1a;Struts2的数据的封装、结果页面配置 l 第三天&#xff1a;Struts2的值栈和OGNL表达式 l 第四天&#xff1a;Struts2的标签库 Struts2…

Java-进阶:多线程2

目录 一、Lock 接口 二、线程间的通信 三、线程池 四、定时器 Timer 五、多线程和异常 一、Lock 接口 1. 线程锁 锁是控制多个线程对共享资源进行访问的工具。通常&#xff0c;锁提供了对共享资源的独占访问。一次只能有一个线程获得锁&#xff0c;对共享资源的所有访问…

Java周总结1

一、计算机高级编程语言类型&#xff1a; a.编译型 b.解释型 Hello.java Java源文件 编译 Hello.class 字节码文件 解释 01101100.... &#xff08;二进制&#xff09;机器码指令 computer…

MMKV集成与原理,先收藏了

标准文档流 标准文档流&#xff0c;指的是元素排版布局过程中&#xff0c;元素会默认自动从左往右&#xff0c;从上往下的流式排列方式。前面内容发生了变化&#xff0c;后面的内容位置也会随着发生变化。 HTML就是一种标准文档流文件 HTML中的标准文档流特点通过两种方式体现…

Java周总结3

撰写第三周课程总结及实验报告&#xff08;一&#xff09; Java实验报告 班级 计科一班 学号 20188375 姓名 汤云云 完成时间 评分等级 实验一 Java开发环境与简单Java程序 一、 实验目的 &#xff08;1&#xff09; 熟悉JDK开…

MMKV集成与原理,吊打面试官系列!

前言 校招 -1 年 这个阶段还属于成长期&#xff0c;更需要看重的是你的基础和热情。对于 JS 基础&#xff0c;计算机基础&#xff0c;网络通信&#xff0c;算法等部分的要求会相对高一些。毕竟这个阶段比较难考察你的业务项目中的沉淀&#xff0c;所以只能从基础部分入手考察。…

CV2摄像头人脸、人眼、微笑等检测

import cv2face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml)#人脸 eye_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_eye.xml)#人眼 smile_cascadecv2.CascadeClassifier(cv2.data.haarcascades haa…

MMKV集成与原理,成功跳槽阿里!

前言 在初学前端的时候&#xff0c;我们总会遇到一些问题&#xff0c;我们可以在网上看到很多关于前端的这些问题&#xff1a; 你们都是怎么学web前端的&#xff1f; 零基础&#xff0c;怎么自学好前端&#xff1f; 前端需要学多久&#xff0c;都学哪些知识&#xff1f; 想成为…

第四周课程总结试验报告(二)

Java实验报告 实验二 Java简单类与对象 一、 实验目的 &#xff08;1&#xff09; 掌握类的定义&#xff0c;熟悉属性、构造函数、方法的作用&#xff0c;掌握用类作为类型声明变量和方法返回值&#xff1b; &#xff08;2&#xff09; 理解类和对象的区别&#xff0c;掌握构造…

MMKV集成与原理,薪资翻倍

毕业工作一年之后&#xff0c;有了转行的想法&#xff0c;偶然接触到程序员这方面&#xff0c;产生了浓厚且强烈的兴趣&#xff0c;开始学习前端&#xff0c;成功收割了大厂offer&#xff0c;开始了我的程序员生涯。 在自学过程中有过一些小厂的面试经历&#xff0c;也在一些小…

Spring入门与常用配置

什么是Spring Spring&#xff1a;SE/EE开发的一站式框架。 一站式框架&#xff1a;有EE开发的每一层解决方案。 WEB层 &#xff1a;SpringMVC Service层 &#xff1a;Spring的Bean管理&#xff0c;Spring声明式事务 DAO层 &#xff1a;Spring的Jdbc模板&#xff0c;Spring的ORM…

MMKV集成与原理,详细学习指南

前言 本文主要是javascript和css方面的基础面试题&#xff0c;适合面试前以及平时复习食用。 基础知识是前端一面必问的&#xff0c;如果你在基础知识这一块翻车了&#xff0c;就算你框架玩的再6&#xff0c;webpack、git、node学习的再好也无济于事&#xff0c;因为对方就不…

第五周课程总结实验报告(三)

实验三 String类的应用 一、实验目的 &#xff08;1&#xff09; 掌握类String类的使用&#xff1b; &#xff08;2&#xff09; 学会使用JDK帮助文档&#xff1b; 二、实验内容 1.已知字符串&#xff1a;"this is a test of java".按要求执行以下操作&#xff1a;&a…

MMKV集成与原理,赶紧学起来

开头 Web前端开发基础知识学习路线分享&#xff0c;前端开发入门学习三大基础&#xff1a;HTML、CSS、JavaScript。除此之外还要学习数据可视化、Vue、React、Angular相关框架&#xff0c;熟练运用框架提升开发效率&#xff0c;提升稳定性。 [外链图片转存失败,源站可能有防盗…