Java面向对象:封装、JavaBean和综合案例

news2024/12/23 22:29:49

目录

  • 封装
    • 基本概念
    • 总结
    • 如何更好的封装
    • 总结
  • JavaBean
    • 补充知识:成员变量,局部变量区别
  • 综合案例

封装

面向对象的三大特征:封装,继承,多态。
封装:告诉我们,如何正确设计对象的属性和方法。
封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。

基本概念

在这里插入图片描述
画圆需要的是圆的属性,是圆的行为。

在这里插入图片描述
门被关,李四被噶

总结

1.什么是封装啊?
告诉我们,如何正确设计对象的属性和方法。
原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
2.理解封装思想有什么好处?
让编程变得很简单,有什么事,找对象,调方法就行。
降低我们的学习成本,可以少学、少记,或者说压根不用学,
不用记对象的那么多方法,有需要时去找就行

如何更好的封装

在这里插入图片描述

package com.itheima.encapsulation;

public class Student {
    private int age;

    public void setAge(int age){
        if(age>=0&&age<=200){
            this.age=age;
        }else{
            System.out.println("您的年龄数据有问题!");
        }
    }

    public int getAge(){
        return age;
    }
}

package com.itheima.encapsulation;

public class Test {
    public static void main(String[] args) {
        Student s =new Student();
        s.setAge(-23);
        System.out.println(s.getAge());
    }

}

在这里插入图片描述

总结

1.如何进行更好的封装?

  • 一般会把成员变量使用private隐藏起来,对外就不能直接访问了。
  • 提供public修饰的getter和setter方法暴露其取值和赋值。

JavaBean

在这里插入图片描述

package com.itheima.javabean;

public class User {
    private String name;
    private double height;
    private double salary;

    public User() {
    }

    public User(String name, double height, double salary) {
        this.name = name;
        this.height = height;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

package com.itheima.javabean;

public class Test {
    public static void main(String[] args) {
        User u1 = new User();
        u1.setName("吴彦祖");
        u1.setHeight(180.5);
        u1.setSalary(1000.0);
        System.out.println(u1.getName());
        System.out.println(u1.getHeight());
        System.out.println(u1.getSalary());

        User u2 = new User("古天乐",175,300000);
        System.out.println(u2.getName());
        System.out.println(u2.getHeight());
        System.out.println(u2.getSalary());
    }
}

在这里插入图片描述

补充知识:成员变量,局部变量区别

在这里插入图片描述

综合案例

在这里插入图片描述

package com.itheima.moviedemo;

public class Movie {
    private String name;
    private double score;
    private String actor;

    public Movie() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}

package com.itheima.moviedemo;

public class Test {
    public static void main(String[] args) {
        Movie [] movies = new Movie[3];

        movies[0]= new Movie("长津湖",9.7,"吴京");
        movies[1]= new Movie("我和我的父辈",9.6,"吴京");
        movies[2]= new Movie("扑水少年",9.5,"王川");

        for(int i =0;i<movies.length;i++){
            Movie m = movies[i];
            System.out.println(m);
            System.out.println("电影名:"+m.getName());
            System.out.println("得分:"+m.getScore());
            System.out.println("主演:"+m.getActor());
            System.out.println("-----------------");
        }
    }
}

在这里插入图片描述

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

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

相关文章

Java学习笔记 --- JDBC(2)

一、事务 1、JDBC程序中当一个Connection对象创建时&#xff0c;默认情况下是自动提交事务&#xff1a;每次执行一个SQL语句时&#xff0c;如果执行成功&#xff0c;就会向数据库自动提交&#xff0c;而不能回滚。 2、JDBC程序中为了让多个SQL语句作为一个整体执行&#xff0…

人工智能算法--启发式搜索与估值函数

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; (*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &a…

Linux--阻塞信号--信号集--0104 05

1. 阻塞信号 1.1 信号其他相关常见概念 实际执行信号的处理过程称为信号递达。信号从产生到递达之间的状态称为信号未决。进程可以选择阻塞&#xff08;Block&#xff09;某个信号。被阻塞的信号保持在未决状态&#xff0c;直至进程解除对该信号的阻塞&#xff0c;才执行递达…

Qt—事件处理

Qt中&#xff0c;事件作为一个对象&#xff0c;继承自QEvent类&#xff0c;常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。Qt中&#xff0c;任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent&#xff08;&#xff0…

百度语音+自动驾驶感知+深度学习平台技术解析

HIEV快讯&#xff08;文/戒僧&#xff09;本文将解析三部分技术内容&#xff0c;出自百度2023 Create大会-技术开放日&#xff1a; •百度如何用“手机全双工语音交互”改善使用导航应用的体验 •如何用“上帝视角”BEV技术提升汽车的自动驾驶能力 •如何用百度自研的深度学习平…

k8s常见错误

master节点初始化失败 出现这个原因是因为&#xff0c;我们之前有执行过初始化的命令&#xff0c;然后初始化的时候就会产生一些文件&#xff0c;和占用端口&#xff0c;然后当你再次初始化的时候&#xff0c;就会提示你有些文件已经存在和端口正在被使用&#xff0c;所以我们…

年末高压叠加“阳”后虚弱,双重压力下的测试者们该何去何从

在2022年的最后一个月&#xff0c;国家放开管控&#xff0c;发布“新十条”&#xff0c;不查核酸&#xff0c;不看健康码&#xff0c;以前闻之色变的“小阳人”&#xff0c;十几天后&#xff0c;遍地皆是。 相信大家对这段时间的经历难以忘怀&#xff0c;在刚放开的时候&#x…

【论文阅读笔记】EndoL2H: Deep Super-Resolution for Capsule Endoscopy

论文地址&#xff1a;https://arxiv.org/abs/2002.05459 代码地址&#xff1a;https://github.com/CapsuleEndoscope/EndoL2H 论文小结 顾名思义&#xff0c;本文是胶囊内窥镜领域的超分算法。本文的网络结构是条件对抗网络 空间attention块的方式&#xff0c;实现8倍、10倍和…

不要再被骗了,解密短视频里追剧看电影都能赚钱的坑。

不要再被骗了,解密短视频里追剧看电影都能赚钱的坑。 最近刷短视频刷到了好多抖音追剧看电影每天收几百&#xff0c;还有截图&#xff0c;还有怎么实操的视频。 关键不是刷到一个两个&#xff0c;是几十个还有越来越多的趋势。 都说新入门实操&#xff0c;终于忍不住&#x…

LeetCode刷题Day05——链表(链表元素删除、相交、环形链表)

文章目录一、删除链表中的倒数第n个节点二、链表相交三、环形链表一、删除链表中的倒数第n个节点 题目链接&#xff1a;19.删除链表中的倒数第n个节点 /*** <pre>* 最简单的方法显然是先遍历一遍链表&#xff0c;知道长度后重新遍历一次就可以找到指定节点了&#xff0…

WebDAV之葫芦儿·派盘+DAVx⁵

DAVx⁵ 支持WebDAV方式连接葫芦儿派盘。 支持移动设备远程同步,是不是比NAS更便捷?并且这款软件最为关键的还是支持各种协议,让你能够在跨平台上面同步安卓和苹果上面的内容,你可以在服务器上面进行一些简单的内容管理,快来试试DAVx⁵与派盘的最佳组合吧。 DAVx⁵是一款…

LeetCode:18. 四数之和

18. 四数之和1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &…

Codeforces Round #772 (Div. 2)

A. Min Or Sum 题目链接&#xff1a;Problem - A - Codeforces 样例输入&#xff1a; 4 3 1 3 2 5 1 2 4 8 16 2 6 6 3 3 5 6样例输出&#xff1a; 3 31 6 7题意&#xff1a;给你一个长度为n的数组&#xff0c;我们可以对这个数组进行操作&#xff0c;每次操作可以选择两个不…

ThinkPHP5之文件包含审计分析(五)

说明 该文章来源于同事lu2ker转载至此处&#xff0c;更多文章可参考&#xff1a;https://github.com/lu2ker/ 文章目录说明0x00 环境准备0x01 测试代码0x02 代码分析0x03 总结参考链接&#xff1a;Mochazz/ThinkPHP-Vuln/ 影响版本&#xff1a;5.0.0<ThinkPHP5<5.0.18 、…

Java - JIT即时编译

java前端编译器和后端编译器的作用Java前端编译器&#xff1a;javac 编译&#xff0c;在程序运行前&#xff0c;将 源文件 转化为 字节码 即 .class 文件Java 程序最初只能通过解释器解释执行&#xff0c;即 JVM 对字节码逐条解释执行&#xff0c;因此执行速度比较慢。字节码与…

【SAP Abap】SAP Flight 航班系统数据模型简介(SCARR、SPFLI、SFLIGHT、SBOOK等)

SAP Flight 航班系统数据模型简介&#xff08;SCARR、SPFLI、SFLIGHT、SBOOK等&#xff09;1、本文目的2、数据模型3、查看模型数据4、生成演示数据5、模型应用1、本文目的 SAP ABAP 系统都会自带 Flight 航班系统数据模型&#xff0c;其大量应用于 SAP ABAP 帮助文档、系统 D…

移动安全总结 2019

声明 本文是学习移动安全总结 2019. 下载地址 http://github5.com/view/1223而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 序言 随着2019年的逝去&#xff0c;二十一世纪第二个十年也已随之结束。回顾过去的十年&#xff0c;我们的生活随着科技的进…

养老院人员定位方案125K芯片AS3933/SI3933/GC3933/PAN3501

随着社会老龄化&#xff0c;高龄化&#xff0c;空巢化和病残化的迅速发展&#xff0c;将使得越来越多的老人住进养老院。虽养老院数量越来越多&#xff0c;但养老院人也越来越多&#xff0c;给现有的养老管理上带来压力&#xff0c;由于服务人员有限&#xff0c;无法及时顾及到…

【LeetCode每日一题】——89.格雷编码

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数学 二【题目难度】 中等 三【题目编号】 89.格雷编码 四【题目描述】 n 位格雷码序列 是一…

举个栗子!Tableau 技巧(249):为文本表中的不同度量设置不同颜色

使用文本表呈现数据时&#xff0c;通常会用颜色的深浅来代表度量的数值大小。单一度量很容易实现&#xff0c;但多个度量的情况&#xff0c;很多数据粉反馈不知道如何实现。 如下示例&#xff0c;在为不同度量设置了不同颜色后&#xff0c;的确既美观又直观。 具体该如何实现呢…