JAVA面向对象(OOP)总结----宏观的程序设计

news2024/11/15 9:10:45

类:使用关键字class,抽象的概念集合。例如人类,具有共性的产物。

对象:具有自己独立属性,具有个性的个体。

类中可以定义的内容:

  1.  成员变量(属性);
  2. 成员方法(功能);
  3. 构造方法;
  4. 内部类;
  5. 代码块

创建一个对象: new Scanner();      new int[];

类的构造方法:每一个类中都有一个默认的无参构造方法。构造方法名与类名一致。无返回值。不用void修饰。

无参构造方法与有参构造方法对比:

public class Round {
    int r;
    String color;
    public Round(){
        
    }
    public Round(String color)
    {
        this.color=color;
    }
    
}

构造方法的作用:初始化创建对象。

 方法重载:在一个类中有多个名称相同的方法。

Q:当出现多个名称相同的方法该如何区分呢?

A:可通过传入的参数个数,类型顺序区分。

普通成员方法也可方法重载。

    public int area(int r)
    {
        return (int) (r*r*Math.PI);
    }
    public double area(double r)
    {
        return r*r*Math.PI;
    }

 

对象与引用

值传递:

1.基本类型值传递(形参改变不影响实参)

public class Myproject {
    public static void main(String[] args) {
        Round r1=new Round();
        int x=1;
        r1.draw(x);
        System.out.printf("x=%d\n",x);
    }
}
public class Round {
    int r;
    public void draw(int r)
    {
        r=10;
        System.out.printf("r=%d\n",r);
    }
}

 

如上述所示,当main函数传入一个实参x,成员方法中改变了形参的大小,可是并没有影响实参最终大小。因此,基本类型的值传递时,形参的改变不影响实参的大小。 

 

2.引用类型值传递 (形参改变影响实参)

首先,我们介绍一下何谓引用类型的值,引用类型包括类(例如字符串),数组,接口。

 

public class Myproject {
    public static void main(String[] args) {
        Person p1=new Person();
        p1.name="adele";
        p1.Read_name(p1);
        System.out.println("对象p1最终的名字为:");
        System.out.println(p1.name);
    }
}
public class Person {
    String name;
    public void Read_name(Person person)
    {
        person.name="amy";
        System.out.println("调用Read_name方法并且在成员方法中更改p1名字,输出的p1对象名字:");
        System.out.println(person.name);
    }
}

 

 神奇的,我们发现最终在main函数中对象的name改变了,形参影响了实参。这是为什么呢?

这是因为在创建一个对象的时候,对象名指向的是持有对象在内存空间的地址(即引用变量)。

传入实参,形参也会指向实参地址,所以改变的是形参指向的地址上的值。接下来我们看看实参和形参所指向的内存地址是否相同来验证。

public class Myproject {
    public static void main(String[] args) {
        Person p1=new Person();
        p1.name="adele";
        System.out.println(p1);
        p1.Read_name(p1);
//        System.out.println("对象p1最终的名字为:");
//        System.out.println(p1.name);
    }
}
public class Person {
    String name;
    public void Read_name(Person person)
    {
        System.out.println(person);
//        System.out.println(person.name);
        person.name="amy";
        System.out.println(person);
//        System.out.println("调用Read_name方法并且在成员方法中更改p1名字,输出的p1对象名字:");
//        System.out.println(person.name);
    }
}

 结果输出:

 通过结果发现,指向的的内存地址始终指向同一个,而改变的是该地址上的值。

所以可以得到结论:使用引用类型值传递时,形参改变会影响实参。


this关键字:表示当前正在操作的对象。

使用this关键字可以引用成员变量,成员方法。

static关键字(静态的意思):

  • 被static修饰的变量,在内存中只有一份。(比如创建了10个学生,他们都来自清华大学,那么此时可以使用static关键字,创建一个成员变量,节省内存空间)
  • 静态成员随着类的加载而加载
  • 使用类名可以直接对静态成员进行访问
  • 静态成员优先于对象存在
  • 修饰的成员被所有对象共享 

代码块:类似于没有名称的方法。

类的加载执行:

  1. 先加载类
  2. 加载静态成员(静态变量,方法,代码块)
  3. 创建对象
  4. 调用构造方法,初始化对象成员

访问权限修饰符(控制能否被外界访问)

  • public:修饰类,成员变量,成员方法。在任何地方均可访问
  • protected:修饰成员变量,成员方法。自己类中和同包类中访问,在不同包子类访问。
  • default(默认):修饰类,成员变量,成员方法。在自己类中和同包中访问。
  • private:修饰成员变量,方法。只能在自己类中访问。 

 

 

 

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

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

相关文章

内网穿透:实现远程访问和测试内部网络的关键技术

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 内网穿透是一项重…

基于ssm的蛋糕预定网站

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

BLCD无刷电机三相电流采样说明与总结

最近在在搞无刷电机电流采集,查了跟多资料,做个小记录,只记录低端和高端的三电阻采集,因为双电阻和但电阻比较麻烦,脑子不够用。 一、高端电流采样 高端采样:如上图(红色波形)&…

Allure的下载和部署

介绍 Allure是一个功能强大的测试报告和测试管理框架,旨在提供清晰、易于理解的测试结果。它支持多种编程语言和测试框架,并提供了丰富的图形化报告,包括图表、图像和日志,以帮助团队更好地分析和诊断测试问题。 下载 这里提供…

老站长带你全面认识基站和天线

认识基站 作为数量最多的移动通信设备 基站几乎是随处可见 其实 基站也分为很多种 基站的天线,也分为很多种,真正都能区分清楚的人其实不多。 什么是基站 Base Station 一般特指“公用移动通信基站” 大家都知道,基站就是给手机提供信…

uni-app 实现自定义按 A~Z 排序的通讯录(字母索引导航)

创建 convertPinyin.js 文件 convertPinyin.js 将下面的内容复制粘贴到其中 const pinyin (function() {let Pinyin function(ops) {this.initialize(ops);},options {checkPolyphone: false,charcase: "default"};Pinyin.fn Pinyin.prototype {init: functi…

在IntelliJ IDEA 中安装阿里P3C以及使用指南

在IntelliJ IDEA 中安装阿里P3C以及使用指南 1.关于阿里p3c1.1说明1.2什么是P3C插件1.3p3c的作用是什么 2 如何在IDEA中安装p3c2.1 插件安装2.2 插件使用 1.关于阿里p3c 1.1说明 代码规范检查插件P3C,是根据《阿里巴巴java开发手册(黄山版)》转化而成的自动化插件…

pdf转cad怎么弄?教你这几种快速转换cad的方法

pdf转cad怎么弄?随着CAD软件的广泛应用,将PDF文件转换为CAD文件的需求也越来越大。虽然市面上有很多PDF转CAD的软件,但是很多软件操作复杂,转换效果并不理想。今天就给大家推荐几种简单方便的转换方法。 方法一:迅捷PD…

arm day2(9.15)数据操作指令,跳转指令,特殊功能寄存器指令,

作业 1.求最大公约数&#xff1a; .text .global _start _start:mov r0,#0x9mov r1,#0x15bl Loop Loop:cmp r0,r1 比较r0寄存器和r1寄存器的中的值beq stop 当两数相同时,退出程序subhi r0,r0,r1 r0>r1 r0 r0 - r1subcc r1,r1,r0 r0<r1 r1 r1 - r0mov pc,lr 恢复现…

Year 2038 problem

前情回顾 已经知道,对于int了tinyint了这些MySql类型,后面那个4或者11没啥实际意义,只是说(当位数不足时)前面填充多少个0,然后使之变为4位或者11位,对这个类型的字段实际能存的长度没啥影响. 即占据1个Byte的tinyint类型,最多就能表征256个不同值. 可以表征无符号的连续数字0-…

在工作流引擎设计领域,是否自动计算未来的处理人的设计模式有哪些?

概述 流程的第一个节点发送下去的时候&#xff0c;就要把以后所有节点的处理人计算出来,能清楚的知道每个节点都是那些人处理. 以驰骋bpm为例来说明这个设计 计算未来处理人包括抄送节点、与待办节点. 默认的模式为&#xff1a;每个节点发送的时候即使计算,就是不计算未来处理…

Linux 软件包管理器-yum使用

文章目录 前言一、yum使用1、什么是软件包2、yum源3、yum list 指令4、yum install 指令5、yum remove指令 二、git的使用1、gitee中仓库的创建2、仓库的克隆3、提交代码到远程仓库4、提交时可能遇到的问题5、.gitignore文件6、删除文件 前言 一、yum使用 1、什么是软件包 在…

发过的朋友圈怎么再快速发一次?

发过的朋友圈怎么再快速发一次&#xff1f; 大部分人第一反应都是去朋友圈 直接翻找&#xff0c;然后保存图片、文案 再重新编辑一次发布朋友圈 有没有快速一点的方法呢&#xff1f; 当然有啦&#xff01; 推荐这款工具 就可以直接把发过的朋友圈再发一次 重发朋友圈 一键…

速卖通在西班牙市场大获成功,为何西班牙成为速卖通最受欢迎的国家之一?

速卖通&#xff08;AliExpress&#xff09;是阿里巴巴旗下的跨境电商平台&#xff0c;面向国际市场&#xff0c;被誉为"国际版淘宝"。 速卖通跨境电商平台最新动态&#xff0c;近日&#xff0c;Statista发布了速卖通全球国家市场渗透率排行榜&#xff0c;该排行榜基…

第十届国家网络安全宣传周今日在全国范围内启动

十届国家网络安宣传周回望 2023年国家网络安全宣传周于9月11日至17日在全国范围内统一开展。其中&#xff0c;开幕式等重要活动在福建省福州市举行。 第一届国家网络安全宣传周活动始于2014年&#xff0c;此后将每年9月的第三周定为活动举行日。网络安全宣传周至今已经走过10个…

Python量化金融风险分析:一文全面掌握VaR计算

金融市场是一个复杂且多变的生态圈&#xff0c;涉及从经济数据到政治动态的各种影响因素。无论你身处何种角色——小投资者、企业财务&#xff0c;还是大型金融机构的资产经理&#xff0c;你都必须面对各种不确定性&#xff0c;例如股价波动、利率变动或突发事件如政治危机和自…

R23C02版本正式发布 | 更智能、更稳定的菊风视频能力平台

近年来&#xff0c;音视频技术正在深入影响各行业服务效能提升&#xff0c;远程音视频服务也在逐渐发展成为对客的重要渠道。菊风作为以实时音视频技术为核心的创新服务商&#xff0c;一直坚持推进技术和产品的更新迭代&#xff0c;致力于孵化符合行业化发展需求的解决方案&…

电路中VCC VDD VSS VEE GND的含义

在电路中&#xff0c;芯片引脚经常会出现VCC&#xff0c;VDD&#xff0c;VSS&#xff0c;VEE和GND这些标示。 其中VCC一般表示通用芯片的电源引脚&#xff0c;比如一些模拟运放的正电源引脚&#xff0c;74系列数字芯片的电源引脚&#xff0c;VCC一般接相应的正电源电压。 VDD一…

HTTPS的传输过程

加密分为两种方式一种是对称加密&#xff0c;一种是非对称加密。 在对称加密算法中&#xff0c;加密和解密使用的密钥是相同的。也就是说&#xff0c;加密和解密使用的是同一个密钥。因此&#xff0c;对称加密算法要保证安全性的话&#xff0c;密钥要做好保密。只能让使用的人…

sudo+vim+g++/gcc+makefile

目录 一、信任表中加入指定的普通用户&#xff08;使其能使用sudo&#xff09; 二、vim的使用 &#xff08;一&#xff09;基本概念 1. 正常/普通/命令模式(Normal mode) 2. 插入模式(Insert mode) 3. 末行模式(last line mode) &#xff08;二&#xff09;vim正常模式…