第一阶段 07类与对象

类与对象

(1)面向对象(简称:OOP,全称:Object Oriented Programming)

     面向对象是一种编程思想,相对面向过程而言

        面向过程

         强调的是功能的过程

        面向对象

         强调功能的结果,不在乎实现的方法

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

(2)类与对象的关系

     类是一个抽象的概念;

     而对象是类抽象概念的实物表达;

     定义一个类表示定义了一个功能模块

   例:

     生活中有各种水果,水果就是类,而具体的西瓜、桃、苹果就是对象

(3)类的定义

    类包括属性和方法

    例:

      人有身高,体重,说话,打球的行为

    Java中用类class来描述事物

      属性:对应类中的成员变量

      行为:对应类中的成员方法

(4)创建对象,使用对象

    class Car{ //对Car类事物进行描述

        String color =“red”;

        int num = 4;

        void show(){

          System.our.println("color="+color+"...num="+num);

        }

      }

      class CarDemo{

        public static void main(String[ ] args){

          Car c = new Car();//创建对象,创建类的实例是通过new关键字来定义的

          c.color = "black" ;//调用对象的属性进行修改

          c.show();//调用对象的功能(方法)

        }

       }

(5)成员变量

     所谓成员变量就是这个类里定义的一些私有的变量,这些变量是术语这个类的。就好比日常生活中的自行车的大小,即这个车子是26还是28的,这个尺寸就是自行车的成员变量,是描述这个自行车的。下面开始介绍成员变量

   (5.1)成员变量的创建

    成员变量描述的是这个类的一些属性或状态的,下面通过代码来演示怎么定义成员变量。语法为:变量的类型 变量的名称

  //bike类描述的是一个自行车

  public class bike{

    //这个成员变量描述的是自行车的颜色

    String color;

    //这个成员变量描述的是自行车的尺寸

    String size;

}

    在该程序中,定义了一个叫bike的类,在该类中定义了两个成员变量,一个表示自行车颜色的color成员变量,一个表示自行车型号的size成员变量

  (通过new关键字来创建这个bike类的对象,用bike类的对象引用b来给其成员变量赋值。因为成员变量是在这个类实例化后才能访问到的。成员变量赋完值后,调用println语句来打印显示结果)

 

(5.2)成员变量的初始化

  通过new关键字来创建一个对象后,会有一个系统默认的初始值。所以说不管有没有在创建成员变量的时候变量一个值,系统都会有一个默认的值

 

(6)局部变量

  局部变量和成员变量很相似都是描述信息的。局部变量和成员变量的不同点就是局部变量是在方法体内创建的,在方法体外是访问不到这个变量的

  (6.1)局部变量的创建和初始化

   局部变量描述的是方法体的一些属性或状态,下面通过代码来演示怎么定义局部变量。创建局部变量的基本语法为:变量的类型  变量的名称

   例:

     //test类描述的是基本类型的初始化

     public class test{

      public static void main(String[ ] args){

        //基本类型的局部变量

        int size = 123:

        boolean b = true;

        //打印并显示局部变量

        System.out.println(size);

        System.out.println(b);

  }

}

(6.2)局部变量和成员变量的区别

   局部变量描述的是这个方法体内的属性的,而成 员变量描述的是这个对象里的属性的,它们之间 的区别,即访问区别如下

      成员变量可以被 public、 protected、 defau|t private、 static、fina|修饰符修饰。

      局部变量可以被final修饰符修饰,但不能修饰为 public、 protected、 default、 private、 static。

      成员变量是在堆里进行创建的,而局部变量是在 栈里进行创建的。 成员变量是系统默认值。

      局部变量没有系统默认值,必须手动赋值。

(7)方法

    每个人都有走、吃和睡等动作。在Java中,所谓 方法就好比日常生活中的一个动作,是完成一系 列操作的。在Java中也是如此,方法收到对象的 信息,进行处理的操作。

(7.1)方法的创建和参数

    方法的参数是提供外界在执行方法的时候提供给 方法的特殊描述信息的,好比日常生活中的,用 力砸东西,用大力砸东西。而这个用大力就是提 供给这个进行特殊描述的。

    创建方法的语法为:

      方法修饰符 方法的返回类型 方法名称(方法参数){

                    ( 方法体)

                }

    

   方法的定义如下所示。

     public void add(int i, int n){

        System. out. printin(i+n);

  } 

  代码说明:

    方法名为add,有两个参数都是int类型的

    方法体是打印i+n的值,并显示处理啊

    方法修饰符为public类型的,修饰符可有可无

    方法的返回为空(void)

(7.2)方法的返回类型

    方法的返回类型有很多种,主要分为如下几类。

      方法返回值为Void类型时为无返回值。

      方法返回值还可以为任意的类型,如 String Boolean、int。

      如果定义了方法的返回类型就必 须在方法体内用 return把返回值进行返回。 方法的返回值可以为nu,但必须是对象类型。 基本类型不能返回null。 在返回值为基本类型的时候,只要能够自动转换 就可返回。 方法的返回类型可以为 object对象 方法的参数也有多种形式,下面是对方法参数的 讨论。 方法的参数可以为基本数据类型,也可以为对象 引用类型。 每个参数都有完整的声明该变量的形式。 方法的参数可以有一个,也可有多个。 Java程序的入口main就为一个方法,参数为 Stringl args,它是个特殊的方法。

(7.3)方法参数的传递

     参数的传递是传递的值还是引用呢。下面通过例 子来分别说明,请仔细考虑。

    例:

     当传递类型为基本类型时,传递的是该 类型的值。

      /test类描述的是基本类型的传递

      public class test{

      //方法add是把传入的参数进行+1,并显示 其结果

      public void add(int i) {

          i=i+1;

          System.out.println(i);

      }

      //程序的运行方法,即入口方法

      public static void main(String[ ] args){

        //基本类型的局部变量

        int size = 44;

        //创建bike类的对象实例,即bike类的对象应用b

        test t = new test();

        //打印运行后的值

        System.out.println(size);

    }

}

   (7.4)方法的重载

   我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能,具体实现如下所示。MethodDemo02.java 

public class MethodDemo02 {

 

    public static void main(String[] args) {

 

        // 下面是针对求和方法的调用

 

        int sum1 = add01(1, 2);

 

        int sum2 = add02(1, 2, 3);

 

        double sum3 = add03(1.2, 2.3);

 

        // 下面的代码是打印求和的结果

 

        System.out.println("sum1=" + sum1);

 

        System.out.println("sum2=" + sum2);

 

        System.out.println("sum3=" + sum3);

 

    }

 

 

 

    // 下面的方法实现了两个整数相加

 

    public static int add01(int x, int y) {

 

        return x + y;

 

    }

 

    // 下面的方法实现了三个整数相加

 

    public static int add02(int x, int y, int z) {

 

        return x + y + z;

 

    }

 

    // 下面的方法实现了两个小数相加

 

    public static double add03(double x, double y) {

 

        return x + y;

 

    }

 

}

 

  从上述代码不难看出,程序需要针对每一种求和的情况都定义一个方法,如果每个方法的名称都不相同,在调用时就很难分清哪种情况该调用哪个方法。

 

  为了解决这个问题,Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。

(7.5)重载的注意事项

 

      重载方法参数必须不同:

        参数个数不同,如method(int x)与method(int x,int y)不同

        参数类型不同,如method(int x)与method(double x)不同g

        参数顺序不同,如method(int x,double y)与method(double x,int y)不同

      重载只与方法名与参数类型相关与返回值无关

        如void method(int x)与int method(int y)不是方法重载,不能同时存在

      重载与具体的变量标识符无关

         如method(int x)与method(int y)不是方法重载,不能同时存在

 

 

 

(8)this关键字

    特点:this代表其所在函数所属对象的引用

    什么时候使用this关键字呢?

      当函数内需要用到调用该函数对象时,就用this

转载于:https://www.cnblogs.com/BaiZe258/p/8885568.html

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

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

相关文章

英媒:人工智能终于接近人类智能了吗?

文章来源:金融时报作者:John Thornhill图片来源:网络编辑:江上波摘要:GPT-3被誉为人工智能领域的重大突破,有人认为它甚至显示出初步意识迹象,另一些人则指出GPT-3存在可笑的缺陷。它可以大量炮…

大创中期报告怎么写_课题研究中期报告怎么写?这篇范文很说的很详细

中期报告一般要求1.课题简介:课题由来、课题界定、研究目标、课题研究内容。2.研究情况:按时间顺序或内容板块有条理地说明研究工作的开展情况;有详有略、有主有次地陈述研究过程中做了什么、怎么做的。3.阶段成果:客观地阐明本课…

php数组转换编码,PHP数组转换编码类

class arrayiconv{static protected $in;static protected $out;/*** 静态方法,该方法输入数组并返回数组** param unknown_type $array 输入的数组* param unknown_type $in 输入数组的编码* param unknown_type $out 返回数组的编码* return unknown 返回的数组*/static publ…

智能合约开发solidity编程语言实例

智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力。智能合约其实是“执行合约条款的计算机交易协议”。区块链上的所有用户…

vba九九乘法表代码_VBA代码模块化--数据透视表

本周工作中,用到了数据透视表的操作,这里汇总一下,学习途径来自网络,学习成果我也乐于分享一二~,代码整理为模块,供大家举一反三,可以套用。① 创建数据透视表,及基本设置先展示数据…

IoT 、5G与边缘计算将会擦出怎样的火花?

来源:半导体行业观察边缘计算是数字世界中最令人兴奋的新概念之一。利用占用空间很少的微型数据中心网络,边缘计算使系统能够实时收集并分析重要数据,而不会增加现有基础设施的负担。在物联网系统中,通常以端到端的方式&#xff0…

js 读取php文件内容为空,PHP 读取文件内容代码(txt,js等)

PHP 读取文件内容代码(txt,js等)发布于 2014-10-15 20:15:37 | 128 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点&…

设计法则 - 菲茨定律 (转)

在看张小龙传时,无意间看到了菲茨定律这个设计法则,研究起来十分有趣,在web、app都广泛应用这个法则。而在简书上有人详细介绍了它,已经非常优秀了,所以这里放个链接,供参考学习。 设计法则: Fi…

windows安装pygame(python3.6)_当我试图安装PyGameforPython3.6时,Pip不起作用[过时]

我正在使用windows 10家庭版64位版本。我正在使用Python3.6 64位版本。我试图通过运行python的干净安装来解决这个错误,但这并没有解决问题。我试图通过pip安装pygame,但产生了以下结果:C:\Windows\system32>pip install pygameCollecting…

“嫦娥上月球挖土”!打破尘封44年的人类历史,中国航天实现“五个首次”...

资料来源:人民网、中国新闻网、智东西等物联网智库 整理发布转载请注明来源和出处3!2!1!点火!随着一声声振奋人心的倒计时,北京时间11月24日4时30分,搭载嫦娥五号月球探测器的长征五号遥五运载火…

就php干活,php可以做什么?,懂得这些技巧就够了

PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。工具/材料电脑PHP操作方法011、运行在服务器端&…

世界上有没有无法破解的密码?揭秘量子通信 | 图图是道

来源:文章2020年11月23日发表于《中国日报》的微信公众号 图图是道科学顾问 / 中国科学技术大学副教授 袁岚峰监制 / 柯荣谊 联合监制 / 邢志刚 统筹 / 张若琼总策划 / 王晓莹 主笔 / 张周项 绘制 / 吴洋未来智能实验室的主要工作包括:建立AI智能…

python怎么发图文_用Python发一封图文并茂的邮件

最近使用了不少通讯工具的接口, 比如企业微信机器人,钉钉,微信公众号的接口(未认证的订阅公众号),相对于邮件来说,它们的表现形式太弱。比如没有更丰富的版本方式。当然了,并不是说表现形式越棒就是约好的通知手段&…

evalin matlab,求解MATLAB问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这个是代码:syms x y z[deltafd]xlsread(附件2.xls,FDOA,B2:B290);[x1]xlsread(附件3.xls,主星星历,B2:B290);[x2]xlsread(附件3.xls,邻星星历,B2:B290);[y1]xlsread(附件3.xls,主星星历,C2:C290);[y2]xlsread(附件3.xl…

从源码的角度再看 React JS 中的 setState

在这一篇文章中,我们从源码的角度再次理解下 setState 的更新机制,供深入研究学习之用。 在上一篇手记「深入理解 React JS 中的 setState」中,我们简单地理解了 React 中 setState “诡异”表现的原因。 源码的部分为了保证格式显示正常就截…

科普|深度解析5G与未来天线技术

来源:电子万花筒过去二十年,我们见证了移动通信从1G到4G LTE的转变。在这期间,通信的关键技术在发生变化,处理的信息量成倍增长。而天线,是实现这一跨越式提升不可或缺的组件。按照业界的定义,天线是一种变…

python的百分号和斜杠 除_关于python:如何替换除字母,数字,正斜杠和反斜杠之外的所有字符...

想要解析文本并仅返回字母,数字,正斜杠和反斜杠,并用替换所有其他斜杠。是否可以仅使用一种正则表达式模式,而不是随后需要循环的几种正则表达式模式? 无法获取下面的样式,不能替换正斜杠。line1 "1/R…

php-curl-class,一个简单PHP CURL类

这里要说明一下...这个类的形成是参考了晚上前辈们的代码加上我自己的理解见解而集成的...前辈们的代码出处已经忘记了我在这里感谢这些前辈们给我的启发...希望这个类能给大家带来帮助...如果有不足的地方...请大家多多指点指点这是一个PHP CURL的类public $cookieFile; …

input输入数字验证

function clearNoNum(obj){obj.value obj.value.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符obj.value obj.value.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的obj.value obj.value.replace(".","$#$").repl…

平行进化论再添证据 牙形刺远隔千里却发育模式相同

来源:科技日报记者:聂翠蓉平行进化观点认为,具有共同祖先的有机体即使彼此被分隔在相距千里的不同地域,也会以同样的方式进化。据物理学家组织网11月23日报道,德国爱尔兰根-纽伦堡大学和加拿大卡尔加里大学的古生物学家…