Java面向对象(类和对象)(自己学习整理的资料)

目录

一.面向对象思想

二.类和对象

三:定义类的步骤

四.创建对象

五.用Java代码写一个简单的登录系统

练习

六.关于类的方法

七.类的无参无返回值方法

八.方法的返回值

练习

关于方法调用问题

九.全局变量和局部变量

十.笔记


一.面向对象思想

  • 就只关注参与这个事件的对象,不关心具体过程,具体过程打散到一个或者多个对象,在main函数中我们可以组合出具体过程。

二.类和对象

  • 把具有相同属性和方法的对象归为一个类(class)。

  • 类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化。

  • 类不代表具体的事物,而对象表示具体的事物。(ps:对象是现实生活中看得见,摸的着的具体的事物)。

三:定义类的步骤

  • 定义类名
  • 编写类的属性
  • 编写类的方法

练习:

编写一个表示小狗的简单类Dog——它表示的不是一只小狗,而是狗这个物种。

public class lian //静态属性String name;//名称int age;//年龄//动态属性  行为   方法System.out.println("我的名字是"+name + ".我今年" + age+"岁了");}
}

四.创建对象

  • 语法

类名 对象名 = new 类名();

引用对象成员:使用"."进行以下操作

引用类的属性:对象名.属性

应用类的方法:对象名.方法名()

Dog dog = mew Dog();
dog.name = "小黑";
dog.age = 5;
dog.sayHello();
public class Dog {//main函数是程序的入口函数public static void main(String[] args) {//在Java中新建一个狗狗对象
Dog dog = new Dog();dog.name = "小黑";dog.age = 5;Dog dog2 = new Dog();dog2.name = "小白"dog2.age = 3;dog1.sayHello();dog2.sayHello();}
}

练习

  • 定义一个Car类,有品牌brand,颜色color,和价格price三个属性,有一个介绍自己的方法名称为show(),请使用程序定义该类,并创建一个对象。
public class color {//品牌String brand;//颜色String color;//价格int price;//自我介绍的方法public void show(){System.out.println("汽车的品牌为:"+brand+",汽车的颜色为:"+color+",汽车的价格为:"+price);}
}

五.用Java代码写一个简单的登录系统

  • 首先定义一个User类存初始的用户名和密码
  • 用户自定义的类也是一种类型(ps:不属于Java中的基本类型,属于引用类型)
package lian;public class UserInfo {String username;String password;
}
  •  在写一个面向的对象的登录页面
package lian;import java.util.Scanner;public class ren {public static  void main(String[] args) {UserInfo[] users = new UserInfo[50];UserInfo info = new UserInfo();info.username = "li";info.password = "666666";users[0] = info;Scanner input = new Scanner(System.in);System.out.println("请输入用户名:");String uname = input.next();System.out.println("请输入密码:");String upwd = input.next();boolean flag = false;//登录失败//判定是否成功登录for (int i = 0;i < users.length;i++){if (users[i] != null && users[i].username.equals(uname) && users[i].password.equals(upwd)){flag = true;break;}}if (flag == true){System.out.println("登录成功");}else {System.out.println("登录失败");}}
}

练习
  • 创建一个Movie类,有电影名称、导演、演员三个属性。写一个打印所有属性信息的方法。

先编写一个定义的类作为引用类型

package lian;public class Movie {
String moviename;
String director;
String[] actors = new String[5];
public void initData(){actors[0] = "张三";actors[1] = "李四";actors[2] = "王五";actors[3] = "赵二";actors[4] = "刘一";}//写一个介绍电影信息的方法public void show(){System.out.println("电影名称为:" + moviename);System.out.println("电影导演为:" + director);System.out.println("电影的参演人员有:");//列举for (int i = 0;i < actors.length;i++){System.out.println(actors[i]);}}
}

再用一个main类打印输出

package lian;import java.util.Scanner;public class lian {public static void main(String[] args) {
Movie movie = new Movie();
movie.moviename = "人生";
movie.director = "李";
movie.initData();//调用自我介绍的方法movie.show();}}

ps:这样用的话作为引用类中的数组其实是有bug的,如果有两部电影调用演员,那么就会调用相同的演员数组。

可做如下更改:

  • 首先在引用类型中注释掉
  • 然后在主函数类中更改代码
package lian;public class lian {public static void main(String[] args) {
Movie movie = new Movie();
movie.moviename = "人生";
movie.director = "李";
movie.actors[0] = "张三";
movie.actors[1] = "李四";
movie.actors[2] = "王五";
movie.actors[3] = "赵二";
movie.actors[4] = "刘一";
//movie.initData();//调用自我介绍的方法movie.show();System.out.println("------");//创建第二部电影Movie movie2 = new Movie();movie2.moviename = "我的人生";movie2.director = "人";movie2.actors[0] = "为";movie2.actors[1] = "国";movie2.actors[2] = "家";movie2.actors[3] = "谋";movie2.actors[4] = "福";movie2.show();}}

ps:这样一来就可以两个不同的电影有不同的演员。

六.关于类的方法

  • 定义一个方法就是定义了一个功能。也就是类可以有什么能力,可以做到什么事情。

  • 定义类方法的五要素:

  1. 访问修饰符

  2. 返回值类型

  3. 方法名

  4. 参数列表

  5. 方法体

ps:(图截取自视频老师讲解)

七.类的无参无返回值方法

package lian;public class Dog {public void run(){System.out.println("小黑在跑");}public void bark(){System.out.println("小黑在叫");}
}
package lian;public class dog2 {public static void main(String[] args) {Dog dog = new Dog();dog.run();dog.bark();}
}

八.方法的返回值

  1. 如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该返回值的类型。

  2. 如果方法没有返回值,返回值的类型应为void(不能省略)。

练习
  • 从键盘接收三门课分数,计算三门课的平均分和总成绩,编写成绩计算类实现功能。

先定义一个引用类型

package lian;public class Calc {int chinese;int math;int english;public int getTotal () {int totalScore = chinese + math + english;return totalScore;}public double getAvgScore () {//第一种求平均分的方法// double result = (chinese + math + english) / 3.0;// return result;//第二种平均分的方法return getTotal()/3.0;}}

再用一个main主函数类

package lian;import java.util.Scanner;public class kecheng2 {public static void main(String[] args) {Scanner input = new Scanner(System.in);Calc calc = new Calc();System.out.println("请输入语文成绩:");calc.chinese = input.nextInt();System.out.println("请输入数学成绩:");calc.math = input.nextInt();System.out.println("请输入英语成绩:");calc.english = input.nextInt();int total = calc.getTotal();//调用一下求平均分的方法double avgScore = calc.getAvgScore();String result = String.format("%.2f", avgScore);System.out.println("总分为:"+total);System.out.println("平均分为:"+result);}
}
关于方法调用问题
  • 如果两个方法不在同一个类中,我们先要实例化对象,然后再通过对象名.方法名()调度。

  • 如果两个方法在同一个类中,那么我们直接通过方法名称调用即可。

九.全局变量和局部变量

  • 变量声明的位置决定变量作用域

全局变量是指定义在任何函数之外的变量,也就是不被任何“{函数体}”所包含,作用域(有效范围)是从定义变量的位置开始到源文件(整个程序)结束

全局变量是在类中定义的变量,它不属于任何一个方法。所有方法都可以共性(读取值,修改值),并且全局变量不赋初值,系统会给默认值。

全局变量特点:系统会给默认值。如果是整型,默认值为0。

局部变量是指在一个函数(包括main函数)内部定义的变量,它只在本函数内部有效,其他函数不能使用这些变量,函数的参数也就是局部变量。

局部变量:在方法中定义的变量,出了方法所在的{}它就死亡了。

十.笔记

package lian;public class lian {public static void main(String[] args) {String str1 = "abc";String str2 = "abc";if (str1 == str2) {System.out.println("=");}}
}

ps:固定的两个格式(或者说两个静态的字符串)可以输出“=”,但不建议这样用,容易出问题。

package lian;import java.util.Scanner;public class lian {public static void main(String[] args) {String str1 = "abc";Scanner input =new Scanner(System.in);String str2 = input.next();if (str1 == str2) {System.out.println("=");}}
}

ps:这样用动态的Scanner输入方式后,结果就不是“=”了,这时的比较就要用equals了。equals既可以识别动态也可以识别静态,因此为了程序的健壮性我们最好引用equals。

  • 在Java中判定一个对象是否为空用的是null。
  • 在Java中判定两个字符串是否相等,用的是equals()。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

FDA辅料数据库在线免费查询-药用辅料

在药物制剂的研制过程中&#xff0c;需要确定这些药用辅料的安全用量。而美国食品药品监督管理局&#xff08;FDA&#xff09;的辅料数据库&#xff08;IID&#xff09;提供了其制剂研发中的关键参考资源&#xff0c;使得更多的医药研发相关人员及企业单位节省试验环节及时间成…

快速学会一个算法,BERT

今天给大家介绍一个强大的算法模型&#xff0c;BERT BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于 Transformer 架构的深度学习模型&#xff0c;主要用于处理自然语言处理&#xff08;NLP&#xff09;问题。 BERT 由 Goo…

星辰计划-深入理解kafka的消息存储和索引设计

消息存储 提到存储不得不说消息的读写&#xff0c;那么kafka他是如何读写数据的呢&#xff1f; 读取消息 1.通过debug(如何debug) 我们可以得到下面的调用栈&#xff0c;最终通过FileRecords来读取保存的数据 写入消息 1.通过debug(如何debug) 我们可以得到下面的调用栈&am…

模型django封装uvicorn服务器部署实战

Uvicorn 是一个轻量级的 ASGI 服务器&#xff0c;它基于 uvloop 和 httptools 这两个高性能的异步库。Uvicorn 提供了快速的启动时间和低延迟的响应&#xff0c;非常适合用于生产环境。 Django&#xff1a; 是一个开源且强大的Web框架&#xff0c;适用于快速开发和部署Python …

深度学习——线性回归

房价预测 线性模型 单层神经网络 损失函数的均方误差 训练数据 参数学习 显示解 偏导数少了负号 最优解y旁边的X少了转置符号 梯度下降 学习率选择 小批量随机梯度下降 批量规模的选择 总结

LeetCode 909. 蛇梯棋

LeetCode 909. 蛇梯棋 给你一个大小为 n x n 的整数矩阵 board &#xff0c;方格按从 1 到 n2 编号&#xff0c;编号遵循 转行交替方式 &#xff0c;从左下角开始 &#xff08;即&#xff0c;从 board[n - 1][0] 开始&#xff09;的每一行改变方向。 你一开始位于棋盘上的方格 …

Linux:八种重定向详解(万字长文警告)

相关阅读Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 本文将讨论Linux中的重定向相关问题&#xff0c;在阅读本文前&#xff0c;强烈建议先学习文件描述符的相关内容Linux&#xff1a;文件描述符详解。 重定向分为两类&#x…

个性化大语言模型:PPlug——让AI更懂你

在当今数字化转型的时代&#xff0c;大型语言模型&#xff08;LLMs&#xff09;已经成为了不可或缺的工具&#xff0c;它们在自然语言理解、生成和推理方面展现了非凡的能力。然而&#xff0c;这些模型普遍采用的是“一刀切”的方式&#xff0c;即对于相同的输入给予所有用户相…

MySQL的乐观锁、悲观锁机制及实现

乐观锁 乐观锁的实现参考了这篇文章&#xff0c;里面还将了乐观锁的时间戳实现方式&#xff1a; 跳转 概述 乐观锁是一种并发控制策略&#xff0c;它假设多个事务不会发生冲突&#xff0c;在执行操作时不加锁&#xff0c;非常乐观&#xff0c;只需每次进行提交时利用标识进行…

ansible批量安装postgresql软件

本文为杭州云贝教育 刘老师 原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎和未经注明出处的转载。 随着分布式系统和大规模应用的普及&#xff0c;自动化部署和管理变得越来越重要。Ansible 是一种流行的自动化工具&#xff0c;它…

DAY80服务攻防-中间件安全HW2023-WPS 分析WeblogicJettyJenkinsCVE

知识点 1、中间件-Jetty-CVE&信息泄漏 2、中间件-Jenkins-CVE&RCE执行 3、中间件-Weblogic-CVE&反序列化&RCE 4、应用WPS-HW2023-RCE&复现&上线CS 中间件-Jetty-CVE&信息泄漏 Jetty是一个开源的servlet容器&#xff0c;它为基于Java的Web容器…

分布式光伏监控系统 在鄂尔多斯市鄂托克旗某煤矿项目中的应用

摘 要&#xff1a;分布式光伏发电就是将太阳能光伏板分散布置在各个区域&#xff0c;通过小规模、模块化的方式实现电能的并网或独立使用&#xff0c;这种发电方式具有就近发电、就近并网、就近转换、就近使用的特点。近年来&#xff0c;技术和政策支持推动了光伏组件的成本持续…

sed(1):强大的文本处理命令

一、命令简介 ​sed​&#xff08;stream editor&#xff09;是一个强大的文本处理工具&#xff0c;它能够执行基本的文本转换&#xff0c;如替换、删除、插入和修改文本行的特定部分。sed​ 命令通常用于对文本文件进行批量编辑&#xff0c;也可以用于处理来自管道的输入。 …

煤矿井下钻场目标检测数据集 5类 voc格式

煤矿井下钻场目标检测数据集 本数据集包含了来自不同钻场和环境背景条件下的70948张图片&#xff0c;涵盖了夹持器、钻机卡盘、煤矿工人、矿井安全帽和钻杆等五类目标&#xff0c;并提供了PASCAL VOC格式的标注文件。 摘要 煤矿井下钻场打钻是解决瓦斯灾害、水害、隐蔽地质灾害…

9.24-k8s服务发布

Ingress 使用域名发布 K8S 服务 部署项目 一、先部署mariadb [rootk8s-master ~]# mkdir aaa [rootk8s-master ~]# cd aaa/ [rootk8s-master aaa]# # 先部署mariadb [rootk8s-master aaa]# # configmap [rootk8s-master aaa]# vim mariadb-configmap.yaml apiVersion: v1 ki…

灵当CRM multipleUpload.php 文件上传致RCE漏洞复现

0x01 产品描述&#xff1a; 灵当CRM是一款专为中小企业量身定制的智能客户关系管理工具&#xff0c;由上海灵当信息科技有限公司开发和运营。该系统广泛应用于多个行业&#xff0c;包括金融、教育、医疗、IT服务及房地产等领域&#xff0c;旨在满足企业对客户个性化管理的需求&…

使用yum为centos系统安装软件以及使用(包含阿里云yum源配置)

centos系统配置阿里云yum源 因为centos7官方停止维护&#xff0c;自带yum源用不了了&#xff0c;所以可以更换成阿里云yum源 方法&#xff1a; 使用root权限执行以下语句 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo CentOS…

【LinuxC高级】汇总

ls ls -l&#xff1a;显示文件的详细信息 ls -a&#xff1a;显示隐藏文件 ls -lh&#xff1a;文件大小单位显示 ls -i&#xff1a;显示文件的inode号 修改密码 passwd 用户名 su 用户名 -----> 用户名 su ----> 如果不加用户名&#xff0c;默认切换到超级用户 cd cd 路径…

YOLOv10改进,YOLOv10主干网络替换为VanillaNet( CVPR 2023 华为提出的全新轻量化架构),大幅度涨点

摘要 基础模型的核心理念是“更多即不同”,这一理念在计算机视觉和自然语言处理领域取得了惊人的成功。然而,变压器模型的优化挑战和固有复杂性呼唤一种向简化转变的范式。在本研究中,引入了 VanillaNet,一种拥抱设计优雅的神经网络架构。通过避免高深度、快捷方式和复杂操…

MySQL—存储过程详解

基本介绍 存储过程和函数是数据库中预先编译并存储的一组SQL语句集合。它们的主要目的是提高代码的复用性、减少数据传输、简化业务逻辑处理&#xff0c;并且一旦编译成功&#xff0c;可以永久有效。 存储过程和函数的好处 提高代码的复用性&#xff1a;存储过程和函数可以在…