java的面向对象编程(oop)概述及案例

前言:

学到了面向对象编程,整理下相关知识点。打牢基础,daydayup!

 面向对象基础概述

1,什么是面向对象,面向对象的思考逻辑是什么?

面向对象就是把任何事物都看成一个又一个对象。思考逻辑为万物皆对象,谁的数据谁处理。

2,什么是对象?

对象是一种特殊的数据结构。同时,对象也称为类的具体实例。对象==实例

3,如何得到对象?

通过class(也就是类)创建出对象,同时class(类)也被称为对象的设计图(或者对象的模板)。java中必须先定义类,才能得到对象。

4,什么是面向对象编程?

通过创建或者寻找对象过来编程解决问题。

5,为什么使用面向对象编程?

符合人类的思维逻辑,使编程更加简单,更加直观。

通过类创建对象

定义的格式

public class 类名{1,成员变量(代表属性,一般是名词):数据类型 名称2,成员方法(代表行为,一般是动词)3,构造器4,代码块5,内部类
}

定义的注意事项

1,建议使用有意义的名称,满足驼峰模式

2,一个java文件中可以创建多个类,但是只能一个类是public修饰的。同时public修饰的类名必须成为java代码的文件名称,否则报错。

 如图

具体如何定义

 1,定义成员变量(属性)

格式:修饰符 数据类型 变量名称 =初始值;

:成员变量非必要不建议给初始化值。不定义初始化值会存在默认值,

默认值的规则:整型是0,浮点型是0.0,引用类型是null,布尔型是false

2,定义成员方法(行为)

 格式如下:

修饰符 返回值类型 方法名(形参列表){需要执行的代码return 返回值;}

定义示例:

public class Study {private String name;private double score;public void print (){System.out.println(name + "的成绩为" + score);}}

 创建对象 

格式

类名 对象名 =new 构造器();

对象怎么使用

格式

对象名.成员变量

对象名.成员方法

注:创建对象时,对象会调用构造器 

构造器:

构造器是一种特殊的方法,名字必须与所在类的名字一模一样。同时不需要写返回值类型,如下图:

 

构造器的作用

初始化一个类的对象,并返回对象的地址

格式

修饰符 类名(形参){……}

构造器的分类

无参构造器:初始化一个类的对象,并返回这个对象的地址,里面数据都是默认值

有参数构造器:初始化一个类的对象,并返回这个对象的地址,同时可以为对象赋值

如何使用构造器

类名 对象名 = new 构造器(参数)

如下图:上面为无参构造器,下面为有参构造器 

注意:

1,类在设计时,如果不写构造器,java会为类自动生成一个无参构造器

2,当设计了一个有参构造器后,java就不会自动设计无参构造器了,需要再手动设计一个无参构造器

this关键字 

 this的作用

代表了当前对象的地址,可以访问当前对象的成员变量和成员方法。

this的使用场景

1,可以用于方法中(谁调用方法,this就代表谁)如下

public class Study {String name;double score;public void print (String name,double score){System.out.println(this.name + "的成绩为" + this.score +";"+name +"的成绩为"+score);}
}

结果:this。name所指向的是lala,而形参变量里的name指向的是ku。

2,可以用于有参构造器中(赋值初始值),如下

public Study(String name,double score){this.name = name;this.score = score;}

 封装

1,什么是封装

用类设计对象处理某一个事物的数据时,把要处理的数据,以及处理这些数据的方法涉及到一个对象中去的过程称为封装。

2,封装的核心思想是什么

合理隐藏,合理暴露

3,代码层面如何控制对象的成员公开或隐藏

公开成员:可以使用public(公开)进行修饰

隐藏成员:使用private(私有/隐藏)进行修饰

当设置成private时,便无法进行处理

需要提供方法才可以使用

目的:在方法里可以给值施加限定,防止值被轻易篡改。 

实体类 (标准java bean)

实体类是一种特殊的类,成员变量必须私有,而且要提供get/set方法;同时必须有无参数构造器。

例:如下图,隐藏成员变量,提供get/set方法,并含有无参构造器

使用目的

实体类只负责数据存取,而对数据的处理交给其他类完成。以实现数据和数据业务处理相分离。

例:如下图,Car为实体类(负责数据存取),CarOperator为操作类(负责功能),CarDemo负责组合,运行结果如右边。

案例:模拟电影票查询系统

目标需求:输入按键1,可以输出全部电影信息。输入按键2,可以查询电影信息。输入其他按键返回界面。

实验思路:1,创建一个实体类用于记录信息;2创建一个操作类用于实现显示和查询功能;3,在main方法中运行查看结果

1,实体类:

public class Moive {private int no;private String name;private String director;private double score;public Moive() {}public Moive(int no, String name, String director, double score) {this.no = no;this.name = name;this.director = director;this.score = score;}public int getNo() {return no;}public void setNo(int no) {this.no = no;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDirector() {return director;}public void setDirector(String director) {this.director = director;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}

 2,操作类

public class MoiveOperator {private  Moive[] moives ;public  MoiveOperator(){}public MoiveOperator(Moive [] moives){this.moives = moives;}public void Operator(){System.out.println("电影目录如下");for (int i = 0; i < moives.length; i++) {System.out.println("编号:"+moives[i].getNo());System.out.println("电影名:"+moives[i].getName());System.out.println("导演:"+moives[i].getDirector());System.out.println("评分:"+moives[i].getScore());System.out.println("----------------------");}}public void Operatorid(int id){for (int i = 0; i < moives.length; i++) {Moive m = moives[i];if (id == m.getNo()){System.out.println(m.getNo());System.out.println(m.getName());System.out.println(m.getDirector());System.out.println(m.getScore());System.out.println("-------------");return;}}System.out.println("没有相关电影");System.out.println("----------");}
}

运行测试:

public class MoiveDemo {public static void main(String[] args) {Moive [] m1 = new Moive[4];m1 [0]=new Moive(1,"开心做账","lala",9.9);m1 [1]=new Moive(2,"开心学习","la",9.8);m1 [2]=new Moive(3,"开心放弃","lal",9.7);m1 [3]=new Moive(4,"开心愤怒","l",9.6);MoiveOperator m2 = new MoiveOperator(m1);Scanner sc = new Scanner(System.in);while (true) {System.out.println("欢迎来到电影系统");System.out.println("1为查询全部信息");System.out.println("2为查询电影");int bu=sc.nextInt();switch(bu){case 1:m2.Operator();break;case 2:System.out.println("请输入编号:");int id =sc.nextInt();m2.Operatorid(id);break;default:System.out.println("请重新输入");System.out.println("---------");}}}
}

实验结果:运行成功

 

整理结束!撒花!!!! 

 

 

 

 

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

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

相关文章

2024年阿里云、腾讯云、华为云、LightNode、硅云服务器如何选?怎么买最划算?[最新价格表]

很多小伙伴都有一颗上云的心&#xff0c;包括我自己 有事没事的折腾一下自己的小破站&#xff0c;也挺有意思的&#xff01; 那么&#xff0c;云服务器哪家好&#xff1f;优惠力度哪家大&#xff1f;活动入口哪里进&#xff1f;云服务器如何配置&#xff1f;如何选型&#xf…

Docker的一个简单例子(二)

文章目录 环境示例持久化数据bind mount多容器应用Docker Compose 参考 环境 RHEL 9.3Docker Community 24.0.7 示例 持久化数据 默认情况下&#xff0c;各个容器之间的文件系统是相互独立的。即使两个容器来自同一个image&#xff0c;对其中一个容器的修改&#xff0c;对另…

FFmpeg读取Assets资源文件

在Android开发中我们经常把原生资源文件放在assets目录下以供需要时读取&#xff0c;通过API提供的resources.assets.open(filename)/openFd(filenam)方法可以非常方便获得InputStream或FileDescriptor&#xff08;文件标识符&#xff09;&#xff0c;但是在使用FFmpeg读取Asse…

腾讯云优惠券如何免费获取?

腾讯云作为国内领先的云计算服务提供商&#xff0c;常常会提供各种优惠券以吸引更多的用户使用其服务。这些优惠券可以大大降低用户的云服务费用&#xff0c;但许多用户可能不知道如何免费获取这些优惠券。本文将为大家介绍几种免费获取腾讯云优惠券的方法。 一、腾讯云官网活动…

软件测试|docker ps命令 管理和监视容器的利器

简介 Docker是一种流行的容器化平台&#xff0c;用于构建、分发和运行应用程序。Docker提供了许多命令行工具&#xff0c;其中之一是docker ps命令。本文将深入介绍docker ps命令&#xff0c;解释其用途、参数和功能&#xff0c;以及如何使用该命令来管理和监视运行中的Docker…

AI动作冒险电影《加勒比海盗:失落的宝藏》(下)

AI动作冒险电影《加勒比海盗&#xff1a;失落的宝藏》&#xff08;下&#xff09; 在宝藏岛屿的探险中&#xff0c;杰克船长不断遭遇铁钩胡克的追击&#xff0c;并陷入了一系列生死危机中。然而&#xff0c;当杰克终于找到宝藏所在的洞穴时&#xff0c;却发现了一个令人震惊的事…

微服务-dubbo工程案例搭建

基础案例搭建 1 依赖 父工程POM <dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${com.alibaba.cloud.vers…

书生·浦语大模型实战营第一次课堂笔记

书生浦语大模型全链路开源体系。大模型是发展通用人工智能的重要途径,是人工通用人工智能的一个重要途径。书生浦语大模型覆盖轻量级、重量级、重量级的三种不同大小模型,可用于智能客服、个人助手等领域。还介绍了书生浦语大模型的性能在多个数据集上全面超过了相似量级或相近…

交换机04_远程连接

通过远程管理方式连接交换机 1、telnet简介 telnet 是应用层协议 基于传输层TCP协议的&#xff0c;默认端口&#xff1a;23 采用的是明文密码方式 不是很安全&#xff0c;一般用于内网管理。 2、ssh协议简介 ssh 是应用层的协议&#xff0c;基于传输层的TCP协议&#x…

C# 自定义配置文件序列化生成+文件格式错误自动回档

文章目录 前言选择Xml简单的Xml使用测试用例简单的写简单的读简单的生成配置修改配置类测试用例运行结果对比 代码逻辑封装逻辑示意封装好的代码测试生成配置文件格式错误测试使用默认值覆盖来解决问题 配置文件人为修改错误如何解决解决方案代码测试用例运行结果 代码封装总结…

Hadoop集群三节点搭建(二)

一、克隆三台主机&#xff08;hadoop102 hadoop103 hadoop104&#xff09; 以master为样板机克隆三台出来&#xff0c;克隆前先把master关机 按照上面的步骤克隆其他两个就可以了&#xff0c;记得修改ip和hostname 二、编写集群同步脚本 在/home/attest/ 创建bin目录&…