Java基础篇——面向对象编程

2023-11-14


活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

 

1、面向对象介绍

         面向对象并不是一个技术,而是一种编程指导思想。它把现实世界的具体事物全部看成一个一个对象来解决问题。 

        我们为什么要使面向对象编程呢?

        生活中我们解决问题就是按照对象化的方式进行的。如果程序也能按照生活中的方式来解决问题,那么程序就更符合人类的思维习惯,代码看起来会更易理解、更简单。 

获取已有对象并使用

public class Test {
    public static void main(String[] args) {
        // 1、得到一个随机数对象,用于得到随机数
        Random r = new Random();
        int data = r.nextInt(10) + 1 ; // 生成 1-10之间的随机数
        System.out.println(data);
        // 2、创建一个扫描器对象,用于接收用户输入的数据
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入您的年龄:");
        int age = sc.nextInt();
        System.out.println(age);
    } 
}

2、类与对象

类:

        类(Class)是人脑对于若干具有相同(或相似)属性和行为的对象的抽象。是对一类事物的描述,是抽象的,概念上的定义。

对象:

        对象(Object)是人们要研究的具体事物,是实际存在的该类事物的每个个体,因此也称为实例(instance)。

类的实例化,即创建类的对象。

 注意事项:

  •  成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值。
  •  类名首字母建议大写,且有意义,满足“驼峰模式”。
  •  一个Java文件中可以定义多个class类,且只能一个类是public修饰,而且public修饰的类名必须成为代码文件名。
  • 实际开发中建议还是一个文件定义一个class类。
  • 当堆内存中的 类对象 数组对象 ,没有被任何变量引用(指向)时,就会被判定为内存中的 “垃圾”。
  • Java存在自动垃圾回收器,会定期进行清理。

3、构造器(构造方法)

构造器的作用:用于初始化一个类的对象,并返回对象的地址。

初始化对象的格式:   类型  变量名称 = new 构造器

Car car = new Car();

构造器分为有参构造器和无参构造器

无参构造器:

        是默认存在的,初始化对象时,成员变量的数据均采用默认值。

有参构造器:

        在初始化对象的时候,同时可以为对象进行赋值。

注意事项:

  • 任何类定义出来,默认就自带了无参数构造器,写不写都有。
  • 一旦定义了有参数构造器,无参数构造器就没有了,此时就需要自己写一个无参数构造器了。

 4、this关键字

        作用:出现在成员方法、构造器中代表当前对象的地址,用于访问当前对象的成员变量、方法。

this出现在有参构造器中的用法:

public class Car {
    String name;
    double price;

    public Car(String name , double price){
        this.name = name;
        this.price = price; 
    } 
}

this出现在成员方法中的用法:

public class Car {
    String name;
    double price;

    public void goWith(String name){
        System.out.println(this.name + "正在和" + name + "一起学Java!!");
    } 
}

 

 5、封装

面向对象的三大特征:封装、继承、多态

        封装(Encapsulation)本质上是一种信息隐藏的手段,即将对象的属性和行为封装为一个整体并使得用户(即使用该对象的其他对象)只能看到该对象的外部接口(即对象暴露给外部的行为 说明),而对象的内部实现(属性即行为的具体实现细节)对用户则是不可见的。封装的目的在于隔离对象的编写者与使用者——使用者无法(也不必)知晓对象的具体实现细节,而是通过编写者为对象提供的外部接口来访问该对象。

        面向对象中的类是封装良好的模块。封装所带来的最大好处是降低了软件系统的耦合程度,当外部接口涉及的行为的实现细节发生变化时,只要接口不变,则使用该接口的对象也不需要做任何修改。

封装的具体实现步骤:

  1. 一般对成员变量使用private(私有)关键字修饰进行隐藏,private修饰后该成员变量就只能在当前类中访问。
  2. 提供public修饰的公开的getter、setter方法暴露其取值和赋值。
public class Student {
    private int age;
    public int getAge() {
        return age; 
    }
    public void setAge(int age) {
        if (age >= 0 && age <= 200) {
            this.age = age;
        } else {
            System.out.println("请检查年龄数值");
        }
     } 
}

6、JavaBean

        JavaBean可以理解为实体类,其对象可以用于在程序中封装数据。

                                                              

 7、成员变量和局部变量的区别

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java基础篇——面向对象编程 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • Java Try Catch Final 没有 Catch 的情况下会阻塞

    我正在审查一些新代码 该程序只有一个 try 和一个 finally 块 既然排除了 catch 块 那么如果 try 块遇到异常或任何可抛出的内容 它如何工作 它直接进入finally块吗 如果 try 块中的任何代码可以引发已检查异常
  • 添加动态数量的监听器(Spring JMS)

    我需要添加多个侦听器 如中所述application properties文件 就像下面这样 InTopics Sample QUT4 Sample T05 Sample T01 Sample JT7 注意 这个数字可以多一些 也可以少一些
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • 主线程如何在该线程之前运行?

    我有以下代码 public class Derived implements Runnable private int num public synchronized void setA int num try Thread sleep 1
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • 列表应该如何转换为具体的实现?

    假设我正在使用一个我不知道源代码的库 它有一个返回列表的方法 如下所示 public List
  • Cloudfoundry:如何组合两个运行时

    cloundfoundry 有没有办法结合两个运行时环境 我正在将 NodeJS 应用程序部署到 IBM Bluemix 现在 我还希望能够执行独立的 jar 文件 但应用程序失败 APP 0 bin sh 1 java not found
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • 如何在 Quartz 调度程序中每 25 秒运行一次?

    我正在使用 Java 的 Quartz Scheduling API 你能帮我使用 cron 表达式每 25 秒运行一次吗 这只是一个延迟 它不必总是从第 0 秒开始 例如 序列如下 0 00 0 25 0 50 1 15 1 40 2 0
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • 启动Java项目时发生类冲突:ClassMetadataReadingVisitor将接口org.springframework.asm.ClassVisitor作为超类

    我正在使用最新的Spring框架版本 3 2 2 RELEASE 开发一个Java Web项目 但是现在项目启动时遇到了问题 详细错误是 java lang IncompleteClassChangeError 类 org springfr
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐

  • 【Python】os.path.exists()的含义 及文件存在但os.path.exists()返回False的原因

    os path exists 函数的功能是查看给定的文件 目录是否存在 存在返回True 不存在返回False 如果给定的文件只有文件名 会在当前文件的目录下索引 给定的文件 目录可以是绝对索引 文件存在但os path exists 返回
  • Nacos 注册中心的设计原理:让你的应用轻松实现高效注册与发现!

    当应用开始脱离单机运行和访问时 服务发现就诞生了 目前的网络架构是每个主机都有 个独立的 IP 地址 服务发现基本都是通过某种方式获取到服务所部署的 IP 地址 DNS 协议是最早将 个网络名称翻译为网络 IP 的协议 在最初的架构选型中
  • cenos自动启动tomcat

    首先创建一个脚本 关闭tomcat 等待2分钟 启动tomcat 并且把日志输出在 usr local tomcat tomcatchognqi log bin bash export JAVA HOME usr local jdk jdk
  • 创建Unity项目

    1 点击 新项目 2 根据实际所需选择对应模板 3 等待创建项目完成 4 点击项目即会在新窗口打开项目
  • 如何自动更新-CMD

    不打算讲得很细 我本人能看懂就行 现在客户端自动更新 一般要用到更新程序 这样就是两个项目 两个exe了 所以对我这来说比较反感 所以就选择了另外一种方法 cmd 由于是自动更新客户端 且是内置的 所以要关闭自身 但是cmd在process
  • VScode远程服务器docker环境

    经常会遇到需要对docker容器中的代码调试的问题 远程使用IDE是很好的选择 具体操作 1 在VScode中下载Remote SSH 2 创建一个ssh连接服务器 3 启动一个docker并注明服务器端口与docker端口的映射关系 Ti
  • 使用 RestSharp访问接口返回 空 数据原因(ssl加密)解决方法

    例子 var client new RestClient https wwwcie ups com rest Track var request new RestRequest Method POST request AddHeader p
  • QT中实现应用程序的单例化

    一介绍 通过编写一个QSingleApplication类 来实现Qt程序的单例化 原文的作者是在Windows Vista Qt4 4 下实现的 不过应用在其他平台上是没问题的 本文是我在http www qtcentre org wik
  • 女程序员的转型

    女 30 做了开发6年 各种语言都多少有点用 但以前都是野路子开发 两个人 一个人做pc端 一个人做web端 或者一个人做app 一个人做web 没有ui 没有前段 所有的人都是你 虽然之前也算是项目经理 但没有一个规范的流程 甚至连流程图
  • OpenCV中imread/imwrite与imdecode/imencode的异同

    OpenCV中的cv imdecode函数是从指定的内存缓存中读一幅图像 而cv imencode是将一幅图像写进内存缓存中 cv imread是从指定文件载入一幅图像 cv imwrite是保存一幅图像到指定的文件中 cv imread和
  • 如何阅读大型程序

    近期想读下程序 但发现非常难 比如一个网络程序模块 有6个cpp源程序 共5916行源代码 不包括头文件中引用的别的地方的代码 1 我对业务还算熟悉 但是看到那么多变量定义时还是感到理解起来很吃力 因为有些变量根本就是过程变量 2 函数层层
  • rust安装link.exe报错

    rust安装link exe报错 今天安装rust完成之后 直接cargo new一个hello world程序 等到cargo run代码的时候发现报错 linking with link exe failed exit code 113
  • PLC-串口通信实例

    随着微电子及控制技术的不断发展 PLC已逐渐成为一种智能型 综合型控制器 由PLC构成的集散控制是现代工业控制的一个重要组成部分 PLC具有使用简单方便 故障率低 抗干扰能力强等优点 但同时 数据的计算处理与管理能力较弱 且无法提供良好的人
  • 使用清华镜像编译aosp

    基础环境编译 与上一篇mac 编译 aosp 一样 http blog csdn net karts article details 54971227 只是 可以在 https mirrors tuna tsinghua edu cn he
  • 【第三阶段 day24】Axios的补充 IDEA自动注入mapper异常说明 Ajax的简化操作

    文章目录 1 Axios的补充 1 1 Axios Post请求 1 2 控制层 2 IDEA自动注入mapper异常说明 3 Ajax的简化操作 3 1 简化axios请求的前缀 3 2 关于promise对象的说明 3 3 Ajax 回
  • 让我们彻底了解Maven(二)--- Maven私服的搭建

    首先我们为什么需要搭建Maven私服 一切技术来源于解决需求 因为我们在实际开发中 当我们研发出来一个公共组件 为了能让别的业务开发组用上 则搭建一个远程仓库很有必要 写完公用组件后 直接发布到远程仓库 别人需要用到时 直接从远程仓库拉取即
  • 共享单车项目数据可视化+需求策略分析

    一 项目背景 自行车共享系统是一种租赁自行车的方式 其中获得会员资格 租赁和归还自行车的过程是通过遍布城市的站点网络自动完成的 使用这些系统 人们可以从一个地方租用自行车 并根据需要将其归还到另一个地方 共享单车是近年来流行起来的新兴产业
  • MOS管参数每一个参数详解-收藏版

    MOS管参数 在使用MOS管设计开关电源或者马达驱动的时候 一般都要考虑MOS的导通电阻 最大电压等 最大电流等因素 MOSFET是电压型驱动器材 驱动的进程即是栅极电压的建立进程 这是经过对栅源及栅漏之间的电容充电来完成的 下面将有此方面
  • PCB铜箔厚度单位盎司(OZ)的具体信息

    盎司 OZ 本身是一个重量单位 盎司和克 g 的换算公式为 1OZ 28 35g 在PCB行业中 1OZ意思是重量1OZ的铜均匀平铺在1平方英尺 FT2 的面积上所达到的厚度 它是用单位面积的重量来表示铜箔的平均厚度 用公式来表示即 1OZ
  • Java基础篇——面向对象编程

    活动地址 CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸 早一天就多一份人生的精彩 迟一天就多一天平庸的困扰 各位小伙伴 如果您 想系统 深入学习某技术知识点 一个人摸索学习很难坚持 想组团高效学习 想写博客但无从下手 急需写作干货注