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("---------");
            }

        }

    }
}

实验结果:运行成功

 

整理结束!撒花!!!! 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计 基于javaweb的宠物认养系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

STHS34PF80人体存在传感器(1)----获取人体存在状态

STHS34PF80人体存在传感器.1--获取人体存在状态 概述视频教学样品申请完整代码下载主要特点硬件准备接口最小系统图生成STM32CUBEMX串口配置IIC配置CS设置串口重定向参考案例获取ID温度测量滤波方式智能识别算法使用块数据更新&#xff08;BDU&#xff09;功能设置ODR速率获取状…

多类指针式仪表自动读数系统的LabVIEW开发应用案例

多类指针式仪表自动读数系统的LabVIEW开发应用案例 工业环境中&#xff0c;多类指针式仪表的自动读数一直是一个具有挑战性的问题。本案例旨在展示如何使用LabVIEW开发一个高度智能化的多类指针式仪表自动读数系统&#xff0c;以应对复杂的工业环境。通过结合图像处理技术和深…

DDoS攻击的多种方式

DDOS攻击指分布式拒绝服务攻击&#xff0c;即处于不同位置的多个攻击者同时向一个或数个目标发动攻击&#xff0c;或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的&#xff0c;这类攻击称为分布式拒绝服务…

【Python学习】Python学习3-变量类型

目录 【Python学习】Python学习3-变量类型 前言变量赋值多个变量赋值标准数据类型Python Numbers(数字)Python List&#xff08;列表&#xff09;Python Tuple&#xff08;元组&#xff09;Python Dictionary&#xff08;字典&#xff09; Python数据类型转换总结参考 文章所属…

万界星空科技MES系统怎么管理生产?

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;是一种用于管理和监控生产过程的软件系统。它通常与企业的ERP系统&#xff08;Enterprise Resource Planning&#xff0c;企业资源计划&#xff09;集成&#xff0c;用于实时收集和分析…

什么是Alibaba Cloud Linux?完全兼容CentOS,详细介绍

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

记录汇川:H5U与Fctory IO 测试1

主程序&#xff1a; 子程序&#xff1a; Fctory IO通讯配置如下 &#xff1a; H5U作服务器&#xff0c;Fctory IO作客户端 这里参考&#xff1a;HU5作服务器地址 实现的动作如下&#xff1a; H5U与Factory IO联动

Diffusion扩散模型学习2:DDPM前向加噪过程torch实现

参考: https://arxiv.org/pdf/2006.11239.pdf ##论文 https://github.com/dtransposed/code_videos/blob/main/01_Diffusion_Models_Tutorial/Diffusion%20Model.ipynb ##code https://spaces.ac.cn/archives/9119 1、红色框: 前向过程论文公式推出可以从x0原图一步到最终噪声…

第10课 实现多对多音视频会议功能

在前两节课&#xff0c;我们将推流端与播放端合并为一对一音视频聊天功能并解决了关键的回声问题&#xff0c;在此基础上&#xff0c;我们可以进一步改进实现多对多的视频会议功能。 1.备份demo9并修改demo9为demo10。 2.打开工程文件&#xff0c;修改mfc为四分屏画面。 界面…

spring boot 2升级为spring boot 3中数据库连接池druid的问题

目录 ConfigurationClassPostProcessor ConfigurationClassBeanDefinitionReader MybatisPlusAutoConfiguration ConditionEvaluator OnBeanCondition 总结 近期给了一个任务&#xff0c;要求是对现有的 spring boot 2.x 项目进行升级&#xff0c;由于 spring boot 2.x 版…

synchronized语法与Before/After模式

synchronized void method(){ ... } synchronized(obj){ ... } 不管是synchronized方法&#xff0c; 还是synchronized代码块&#xff0c; 都可以看做在“{”处获取锁&#xff0c; 在"}"处释放锁。 比较下使用synchronized的代码 与显式处理锁的代码。假设存在一个…

基于X86的助力智慧船载监控系统

船载综合监控系统结合雷达、AIS、CCTV、GPS等探测技术&#xff0c;以及高度融合的实时态势与认知技术&#xff0c;实现对本船以及范围内船舶的有效监控&#xff0c;延伸岸基监控中心监管范围&#xff0c;保障行船安全&#xff0c;为船舶安全管理部门实现岸基可控的数据通信和动…

基于冒泡排序思想的qsort函数的模拟实现

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

基于JavaWeb+SSM+Vue家政项目微信小程序系统的设计和实现

基于JavaWebSSMVue家政项目微信小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2…

c语言:用结构体找出学生年龄|练习题

一、题目 在结构体数组中&#xff0c;输入学生信息&#xff0c;找出学生的年龄。 如图&#xff1a; 二、代码图片【带注释】 三、源代码【带注释】 #include <stdio.h> //设置结构体&#xff0c;结构体有3个变量 struct student { int id; char name[20]; …

【计算机网络】TCP原理 | 可靠性机制分析(一)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

html5中各标签的语法格式总结以及属性值说明

有关闭标签的元素 a元素 <a href"" target"" title""></a>表格相关元素 table元素&#xff1a;表格标签caption元素&#xff1a;表头thead元素tbody元素&#xff1a;表格主体元素tfoot元素th元素tr元素&#xff1a;行标签td元素&…

P12 音视频复合流——TS流讲解

前言 从本章开始我们将要学习嵌入式音视频的学习了 &#xff0c;使用的瑞芯微的开发板 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《Linux C应用编程&#xff08;概念类&#xff09;_C…

内存 vs 硬盘:固态硬盘代替内存可以工作吗?

使用固态硬盘代替内存可以吗&#xff1f; 答案是​&#xff1a;不可以​。 ​这个问题看似复杂&#xff0c;其实包含很多方面的原因。 一、存储结构方面 固态硬盘和内存在存储结构上就完全不同。 1.1 固态硬盘采用的是3D闪存单元阵列来存储数据 这些存储单元被一层层地堆…