ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2022-07-18 第十组 Myy 学习笔记_面向对象

2022-07-20 21:38:52  阅读:162  来源: 互联网

标签:Myy 07 对象 18 数据类型 构造 参数 返回值 方法


面向对象

今日重点:

  • 方法的定义和调用

  • 递归

  • 方法的重载
  • 构造器(构造方法)



Java是一门面向对象的编程语言,在Java中,万事万物皆对象

(在Linux中万事万物皆文件)

面向过程和面向对象

  1. 面向过程:面向过程就是分析出实现需求需要的步骤,通过一些方法来一步一步实现
  2. 面向对象(行为化):把整个需求的按照特点、功能划分,将这些存在共性的部分封装成类(类实例化之后才是对象),让对象去解决问题

举例:七夕,你想送你女朋友一个包

面向对象:找个店,买个包。不管是商家,还是包,都是现实中真实存在的事物。这个商店或者包我们就可以称之为对象,在整个的你去买包或者商家卖包,我们忽略了一个过程:包是怎么加工的。

面向过程:找原材料,自己缝制,每一个工序都自己干。

·其实高级的编程语言,就会向着人的思考靠近

·面向对象是更高级的抽象,是对现实世界的映射。

·String  Scanner  我们在使用Scanner时,从来没考虑过Scanner为什么能实现键盘输入,这就是别人给我们创建的对象,事实上我们也能自己创建对象。在开发中基本上我们会大量的自己创建自己的对象。

 

举例:我们准备开4s店,需要有车,需要有门店,尝试去搞一个4s店

先说说我们怎么用代码去描述一辆车:

车:描述信息,描述信息叫做属性,属性实际上从代码的角度来说就是变量

定义变量 :brand  color  length  

问题:怎么描述好几台车?

我们可能会需要几十个甚至上百个数组来维护一百辆车的信息。

这时,我们就要用面向对象的思想,我们将一个汽车的多个属性尝试进行打包,这个过程实际上就是在封装对象。

在Java中,面向对象有三(四)大特征:

  1. 封装
  2. 继承
  3. 多态
  4. 抽象

造车必须有一个图纸,根据图纸可以造一百台车。这个图纸就是在描述车的具体信息,对车的信息的封装。

封装:1.代码层面    2.思想层面

 

如果把变量直接声明在类里,叫成员变量(全局变量);如果把变量声明在某个方法里,叫局部变量。

 

成员变量—属性

 

·创建对象的过程,类的实例化的过程,对象又叫做类的一个实例

我们创建了一个Car类的对象car1,这个car1就是对象的名。其实这个car1就是个标识符。

·对象名的命名规则:小驼峰

·创建对象的语法:类名 对象名 = new 类名( );类名 对象名 = new 构造器(类名())

 

重点

  1. 之前我们学习过8中基本数据类型
  2. 从今天开始我们的数据类型就更多了,我们能够遇见的所有的类,包括我们刚刚创建的Car 是一种数据类型。(除了基本数据类型,其他都是引用数据类型)。所有的类都是引用数据类型

·此刻起,我们才真正了解了class这个关键字,用来创建一个类,用来创建一个数据类型,因为类就是一个数据类型。像car1,car2,car3......car100叫引用,它是指向内存中的一块区域,存放 空间,我们叫做堆。

 

我们需要了解两块内存空间:

  1. 栈:我们存的是变量和基本数据类型(特点:先进后出)地址是一个十六进制的字符串

引用数据类型的初始值为null

赋值时除了String以外,其余的引用数据类型都需要new

 

成员方法:(JS)里的函数

定义一个成员方法

 

 

 

public :访问权限修饰符  

void :没有返回值   

run( ):方法名(标识符)  

{ }:方法体(这个方法要干哪些事)  

( ):传参数

·参数可以有多个,中间用逗号隔开

·Java中的传参需要明确数据类型

 

·在声明方法时,括号里的参数:形式参数(形参),可以当做局部变量使用

·在调用方法时,

形参是在声明处,实参是在调用处

 

有返回值的方法

public

boolean:返回值类型,我这个方法经过一系列的运行过后,要得到一个具体的值,返回值,返回值的类型是boolean

返回值用return  xxx; 类型要匹配

有返回值的方法在执行后会得到一个具体的值,这个值可以存下来

 

到底什么时候要有返回值,什么时候没有返回值?

开发中,大部分的方法都有返回值

 

return关键字

  1. return关键字终止方法继续执行
  2. 返回方法的返回值

 

问题:在void的方法中,能不能有return?    

 

 

标识符的命名规则

(字母、数字、下划线、美元符号、数字不能开头)

  1. 类名:大驼峰(所有单词的首字母大写)
  2. 属性名、方法名:小驼峰(除了第一个单词,其他的单词的首字母大写)

 

省略一部分要执行的代码

 

在一个方法中调用其他方法

 

访问权限修饰符

  1. public 共有的,公共的  权限最大,只要是public声明的方法,只要在同一个工程中,都能用。

·可以放在类、属性、方法、构造器上

  1. protected 受保护的:可以跨包,如果跨包必须是它的子类

·可以放在属性、方法、构造器上

  1. 默认的(啥也不写)default:只有当前包下可以访问(把包导进来也不行)

·可以放在类、属性、方法、构造器上

  1. private 私有的  权限最小,只有在当前类才能用

·可以放在属性、方法、构造器上

 

成员方法

  1. 方法名不能重复

·如果一个方法有static,要调用一个非static的方法,就只能创建对象,使用对象.方法的形式调用

Ch01 c = new Ch01( ) ;

c.run( );

·自己调自己:递归

·递归的问题:StackOverflowError   栈溢出(内存溢出)

在开发中到底要不要用递归?如果用的话,要注意什么?

 

斐波那契数列

 

方法的重载(OverLoad)

要求和特点:

  1. 方法名相同
  2. 参数不同才能构成方法的重载

(1) 参数的类型不同

(2) 参数的个数不同

(3) 参数的顺序不同

·与返回值类型无关;与访问权限修饰符无关;与方法体无关。方法的重载只跟参数有关

  1. 方法的重载一定是发生在同一个类里

 

方法的重载的好处

为了把功能相似甚至是相同的方法可以用同一个名字

 

不定长参数

 

 

 

  1. 参数列表中只能(至多)有一个不定长参数
  2. 不定长参数必须在最后位置

·不定长参数的本质是数组

 

·java.lang包下的所有的类不需要显式的导入,剩下的都需要导包

 

构造器(构造方法)

语法:访问权限修饰符 类名(参数列表){ }

特点(特性):

  1. Java在new对象的时候,先看对象所对应的类有没有构造器,有的话有什么样的构造器;如果没有构造器,则无法构建对象(创建对象)
  2. 每个类会有一个默认的无参的构造器
  3. 在对象被实例化时调用了构造器
  4. 我们创建对象实际上是通过构造器创建的
  5. 如果一个类中显示的声明了一个构造器,原来默认自带的无参构造器就失效(被覆盖)。如果有多个构造器,必须重载。

 

类与类之间的关系(2种)

1.has a的关系(包含、使用、有的关系)

eg:人有一只猫

标签:Myy,07,对象,18,数据类型,构造,参数,返回值,方法
来源: https://www.cnblogs.com/JNMyy/p/16496095.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有