Java奠基】实现面向对象编程方法

news2024/11/28 4:26:31

目录

标准的JavaBean类

设计对象并使用

对象封装

this关键字

构造方法


要知道对象是一个又一个能帮助我们解决问题的东西,但是这些东西并不是凭空出现的,需要我们根据设计图来进行制造,而这些一个一个的设计图就是一个一个的类。

标准的JavaBean类

1)类名需要见名知意

2)成员变量使用private修饰

3)提供至少两个构造方法(无参构造方法、带全部参数的构造方法)

4)成员方法(提供每一个成员变量对应的get和set方法,如果还有其他行为,也需要写上)

(设计图):是对象共同特征的描述;对象是真实存在的具体的东西。在Java中必须先设计类才能获得对象。

设计对象并使用

在Java中如何定义类呢?如下:

public class Phone {
    // 属性
    String brand;
    double price;
    
    // 行为
    public void call(){
        System.out.println("小米手机");
    }
    public void playGame(){
        System.out.println("打游戏");
    }
}

在Java中如何得到类的对象呢?如下:

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

在Java中如何使用对象呢?如下:

访问属性:对象名.成员变量

访问行为:对象名.方法名(...)

代码如下:

注意

1)类名首字母建议大写,需要见名知意,驼峰模式。

2)一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名,实际开发中建议一个文件定义一个class类。

3)成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值;一般无需指定初始化值,存在默认值。

对象封装

封装告诉我们,如何正确设计对象的属性和方法,对象代表什么就得封装对应的数据,并提供数据对应的行为

private关键字:是一个权限修饰符(私有),可以修饰成员变量和方法,被private修饰的成员只能在本类中才能访问。

public class Phone {
    // 属性
    private String brand;
    private double price;
    // 针对每一个私有化的成员变量,都要提供get和set方法
    // set方法:给成员变量赋值
    public void setBrand(String n){
        brand = n;
    }
    public void setPrice(double m){
        if(m >= 1000 && m<= 3000){
            price = m;
        }else{
            System.out.println("价格太高,我不允许!");
        }
    }
    // get方法:对外提供成员变量的值
    public String getBrand(){
        return brand;
    }
    public double getPrice(){
        return price;
    }
    // 行为
    public void call(){
        System.out.println("小米手机");
    }
    public void playGame(){
        System.out.println("打游戏");
    }
}

针对private修饰的成员变量,如果需要被其他类使用,应提供如上相应的操作,set方法用于给成员变量赋值,get方法用于获取成员变量的值:

public class PhoneTest {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.setBrand("小米");
        p.setPrice(1999.98);
        // 获取手机对象中的值
        System.out.println(p.getBrand());
        System.out.println(p.getPrice());
        // 调用手机中的方法
        p.call();
        p.playGame();
    }
}

this关键字

当我们不使用this关键字时,代码的取值采取的是就近原则如下:

当我们采用this关键字时,访问的就是全局变量而不是局部变量了:

构造方法

构造方法也叫构造器,构造函数。作用:在创建对象的时候,由虚拟机自动调用,给成员变量进行初始化赋值。

构造方法的格式如下,其具体特点为:

1)方法名与类名相同,大小写一致

2)没有返回值类型,连void都没有

3)没有具体的返回值(不能由return带回结果数据)

构造方式

1)无参数构造方法:初始化的对象时,成员变量的数据均采用默认值

2)有参数构造方法:初始化对象的时候,同时可以为对象进行赋值

public class Student {
    修饰符 类名(参数){
        方法体;
    }
}

构造方法注意事项

构造方法定义

1)如果没有定义构造方法,系统将给出一个默认的无参数构造方法

2)如果定义了构造方法,系统将不再提供默认的构造方法

构造方法的重载

1)带参构造方法和无参构造方法,两者方法名相同但是参数不同,这叫做构造方法的重载

推荐使用方式

无论是否使用,都手动书写无参构造方法和带全部参数的构造方法

如果想快速生成构造方法,也可以借助快捷键(alt + insert)进行一键生成,如下:

当然也可以借助插件 PTG 1秒生成标准的JavaBean,如下右键一键成:

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

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

相关文章

ChatGPT分销版多开v3.9.1-新增 语音识别和绘画多个引擎-已测试

众所周知ChatGPT在国内是无法正常使用的 而我们模块要做的就是这一点让普通人使用上ChatGPT 或娱乐或作为生产力工具 当前ChatGPT是非常火的 但是国内环境复杂&#xff0c;所以机会来了。。。 ChatGPT分销版多开v3.9.1&#xff1a;公众号H5版本 目前没反编译前端容易封号…

计算机网络-SNMP协议与pysnmp

1.概念 2.典型架构 3.snmp的信息交互 4.MIB 4.1常见MIB节点 5.SNMP管理模型 MIB位于被管理进程 6.SNMP的三个版本 6.1 SNMPv1 6.2 SNMPv2C 6.3 SNMPv3 6.3.1 SNMP3的基本操作 6.3.2 SNMP交互GET 6.3.3 SNMP交互-GETBULK 6.3.4 SNMP交互-SET 6.3.5 SNMP交互-trap 6.3.6 SNMP交…

【开源之夏 2023】欢迎报名 Dragonfly、Kata Containers、Nydus 社区项目!

开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;促进优秀开源软件社区的蓬勃发展&#xff0c;培养和发掘更多优秀的开发者。 活动联合国内外各大开源社区&#xff0c;针对重要开…

Dubbo消费端源码深入分析(8)

目录 简介 过滤器 &#xff08;Filter&#xff09; 负载均衡接口 &#xff08;LoadBalance&#xff09; 容错接口 &#xff08;Cluster&#xff09; 源码分析 1. 获取Invoker过程 2. 获取动态代理对象proxy 3. 最后调用此动态代理对象的invoke方法 过滤器、容错组件、负…

基础IO(二)

磁盘 1.基础概念2.磁盘线性理解3.文件系统4.inode与文件名5.理解增删查改6.补充细节 &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f680;系列专栏&#xff1a;【Linux的学习】 &#x1f4dd;&#x1f4…

Chapter7:非线性控制系统分析(下)

第七章:非线性控制系统分析 Exercise7.11 设非线性系统结构图如下图所示,分析系统运动并计算自振参数。 解: 将 3 3 3个串联非线性环节进行等效合并,由于反馈通道饱和特性与前向通道饱和特性同时进入饱和状态,所以反馈通道的非线性环节相当于不起作用,将前向通道的另两…

【计算机视觉 | 自然语言处理】Hugging Face 超详细介绍和使用教程

文章目录 一、前言二、可以获得什么&#xff1f;三、入门实践3.1 帮助文档3.2 安装3.3 模型的组成3.4 BERT模型的使用3.4.1 导入模型3.4.2 使用模型3.4.2.1 tokenizer 3.5 model3.6 后处理 一、前言 Hugging Face 起初是一家总部位于纽约的聊天机器人初创服务商&#xff0c;他…

URP渲染管线里面的摄像机用法

大家好&#xff0c;我是阿赵&#xff0c;这里继续讲一下URP渲染管线。 这次要讲的是URP渲染管线里面的摄像机用法 之前介绍过&#xff0c;URP摄像机和普通摄像机的属性显示上有比较大的变化&#xff1a; 接下来从用法上来说明一下&#xff1a; 1、多个摄像机的处理变化 多个…

unity UGUI系统梳理 -交互组件

概述 unity 中的交互组件可用于处理交互&#xff0c;例如鼠标或触摸事件以及使用键盘或控制器进行的交互 1、按钮 (Button) Button详解 2、开关 (Toggle) Background&#xff1a;背景图片&#xff0c;控制toggle组件的背景颜色改变&#xff0c;从而展示此物体是否被选中的…

5.View的事件分发机制/事件处理机制原理分析

事件MotionEvent包含了哪几个? ACTION_DOWN 手指触碰到屏幕时触发,只会执行一次ACTION_MOVE 手指在屏幕上滑动出发,会执行多次ACTION_UP 手指抬起离开屏幕出发,只会执行一次ACTION_CANCEL 事件被上层拦截时会触发 父容器ViewGroup需要从子View手中抢夺分发的事件进行处理时,会…

【SCI】综合能源系统中热电联产、电制气和碳捕集系统的建模与优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Java 网络编程 —— 非阻塞式编程

线程阻塞概述 在生活中&#xff0c;最常见的阻塞现象是公路上汽车的堵塞。汽车在公路上快速行驶&#xff0c;如果前方交通受阻&#xff0c;就只好停下来等待&#xff0c;等到公路顺畅&#xff0c;才能恢复行驶。 线程在运行中也会因为某些原因而阻塞。所有处于阻塞状态的线程…

C++数据结构:哈希 -- unordered系列容器、哈希表的结构以及如何通过闭散列的方法解决哈希冲突

目录 一. unordered系列关联式容器 1.1 unrodered_map和unordered_set 综述 1.2 常见的接口函数&#xff08;以unordered_map为例&#xff09; 1.3 unordered系列与map和set的效率对比 二. 哈希表的底层结构 2.1 什么是哈希 2.2 哈希函数 2.3 哈希冲突 三. 通过闭散列的…

JavaEE(系列2) -- 多线程(创建多线程)

讲述下面的内容之前,先来回顾一下一个重要的知识点 进程和线程之间的区别 1.进程包括线程。 2.进程有自己独立的内存空间和文件描述符表。同一个进程中的多个线程之间&#xff0c;共享同一份地址空间和文件描述符表。 3.进程是操作系统资源分配的基本单位&#xff0c;线程是操作…

5.14学习周报

文章目录 前言文献阅读摘要介绍方法模型框架评价指标结果结论 时间序列预测总结 前言 本周阅读文献《A Hybrid Model for Water Quality Prediction Based on an Artificial Neural Network, Wavelet Transform, and Long Short-Term Memory》&#xff0c;文献主要提出了基于人…

iconfont-extract: 一个将iconfont图标转化为React组件的工具

iconfont 提供了海量的图标&#xff0c;同时也方便了前端开发者使用这些图标&#xff0c;只需要添加对应的js、css或者字体文件即可。在我们的项目中使用添加js文件的方式&#xff0c;js文件中都包含了所有的图标&#xff0c;一个项目中通常只会使用其中的一部分&#xff0c;所…

【架构设计】DDD 到底解决了什么问题

文章目录 前言一、架构设计是为了解决系统复杂度1.1 架构设计的误区1.1.1 每个系统都要做架构设计/公司流程要求有架构设计1.1.2 架构设计是为了追求高性能、高可用、可扩展性等单一目标 1.2 架构设计的真正目的1.3 系统复杂度的六个来源及通用解法1.3.1 高性能1.3.1.1 单机复杂…

JavaWeb-一篇文章带你入门CSS(笔记+案列)

目录 CSS是什么基本语法 CSS的引入方式内部样式表行内样式表外部样式表 选择器基础选择器标签选择器类选择器id选择器通配符选择器 复合选择器后代选择器子选择器 常用元素属性字体属性文本属性背景属性圆角矩形 元素的显示模式块级元素行内元素 我们可以使用display属性来修改…

对称加密/非对称加密

古典密码学 起源于古代战争:在战争中&#xff0c;为了防止书信被截获后重要信息泄露&#xff0c;人们开始对书信进行加密。 移位式加密 如密码棒&#xff0c;使用布条缠绕在木棒上的方式来对书信进行加密。 加密算法&#xff1a;缠绕后书写 密钥&#xff1a; 木棒的尺寸 替…

[笔记]深入解析Windows操作系统《四》管理机制

文章目录 前言4.1注册表查看和修改注册表注册表用法注册表数据类型注册表逻辑结构HKEY_CURRENT_USERHKEY_USERS 实验&#xff1a;观察轮廓加载和卸载HKEY_CLASSES_ROOTHKEY_LOCAL_MACHINE 实验:离线方式或远程编辑BCDHKEY_CURRENT_CONFIGHKEY_PERFORMANCE_DATA 前言 本章讲述了…