一.类与对象

1.类与对象的关系示意图


一个类至少两部分组成:属性,行为
注意:从类到对象有几种说法:
1.创建一个对象
2.实例化一个对象
3.把类实例化

2.快速入门实例

养猫问题

3.类和对象的区别与联系:

1.类是抽象的,概念的,代表一类事物,是数据类型
2.对象是具体的,实际的,代表一个具体事物,是实例
3.类是对象的模板,对象是类的一个个体,对应一个实例

4.对象在内存中的存在形式


字符串存放在方法区的常量池

5.属性/成员变量

从概念或叫法上来看:成员变量=属性=field(字段)即成员变量是用来表示属性的
属性是类的一个组成部分,一般是基本数据类型,也可以是引用类型(对象,数组)。
比如:int age 就是属性
注意事项和细节说明
1.属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;
简单介绍访问修饰符:控制属性的访问范围
四种:public,proctected,默认,private(后面会详细介绍)
2.属性的定义类型可以是任意类型,包含基本类型和引用类型
3.属性如果不赋值,有默认值,规则和数组一致。

6.创建对象和访问属性

如何创建对象:
1.先声明再创建:
Cat cat;
cat = new Cat();
2.直接创建:
Cat cat = new Cat();
注意:cat是对象名
如何访问属性:
基本语法:对象名.属性名;
例如:
cat.name;
cat.age;

7.对象分配机制(重要)

例子:

即:p2.age = 10 ,两个变量名指向同一个地址空间。
Java内存的结构分析:
1.栈:一般存放基本数据类型(局部变量)
2.堆:存放对象(Cat cat,数组等)
3.方法区:常量池(常量,比如字符串),类加载信息
Java创建对象的流程分析:

Person p = new Person();
p.name = "jack";
p.age = 10;

1.先加载Person类信息(属性和方法信息,只会加载一次)
2.在堆中分配空间,进行默认初始化(看规则)
3.把地址赋给p,p就指向对象
4.进行指定初始化,比如p.name = "jack ",p.age = 10

二.成员方法

基本介绍:
在某些情况下,我们需要定义成员方法(简称方法)。比如人类:除了有一些属性外(年龄,姓名…),还有一些行为比如:说话,跑步等。这是就要用成员方法才能完成。

1.入门例子:

添加speak成员方法,输出 我是一个好人
1.定义一个类
2.添加speak方法

3.方法的使用

关于形参列表的使用小例子:
1.

使用方法:若想要n为5,则:
p1.calo2(5);


使用方法:
//把方法getSum返回的值赋给变量returnRes
int returnRes = p1.getSum(10,20); //num1和num2
System.out.println(returnRes);

2.方法的调用机制(重要!)

以getSum为例,示意图:

方法调用小结:
1.当程序执行到方法时,会开辟一个独立的空间(栈空间)③
2.当方法执行完毕,或者执行到return语句,就会返回,返回到调用方法的地方④
3.返回后继续执行方法后面的代码⑤
4.当main方法(栈)执行完毕,整个程序退出

3.方法的妙用

1.提高了代码的复用性
2.可以将实现的细节封装起来,然后供其他用户调用即可

4.成员方法的定义
public(访问修饰符) 返回数据类型 方法名(参数列表){语句;return 返回值;
}

参数列表:表示成员方法输入,例如cal ( int n );
数据类型(返回类型):表示成员方法输出,void表示没有返回值
方法主体:表示为了实现某一功能的代码块
return语句不是必须的

5.方法的使用细节

返回数据类型:
1.一个方法最多有一个返回值(如何返回多个结果:返回数组)
2.返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)
3.如果方法要求有返回数据类型,则方法体中最后的执行语句必须为return值;而且要求返回值类型必须和return的值类型一致或兼容(兼容:int→double自动转换)
4.如果方法是void,则方法体中可以没有return语句或只写return

方法名:
遵循驼峰命名法,最好见名知义,表达出该功能的意思即可,比如:得到两个数的和getSum

形参列表:
1.一个方法可以有0个参数,也可以有多个参数,中间用逗号隔开
2.参数类型为任意类型,包含数据类型和引用类型
3.调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
4.方法定义时的参数称为形式参数,简称形参;方法调用时的参数称为实际参数,简称实参,实参和形参的类型要一致或兼容,个数,顺序必须一致

方法体:
里面写完成功能的具体的语句,可以为输入,输出,变量,运算,分支,循环,方法调用,但里面不能再定义方法。即:方法不能嵌套定义

方法调用说明:
1.同一个类中的方法调用:直接调用即可,比如:print(参数);

2.跨类中的方法A类调用B类方法:需要通过对象名调用,比如:对象名.方法名(参数);

3.特别说明一下:跨类的方法调用和方法的访问修饰符相关

6.成员方法的传参机制(重要)

(1).基本数据类型的传参机制
传递的是值(值拷贝),形参的任何改变不影响实参!
(2).引用数据类型的传参机制
传递的是地址(传递也是值,但值是地址),可以通过形参影响实参!

7.克隆

见代码:keLong.java

8.方法递归调用

递归:就是方法自己调用自己,每次调用时传入不同的变量。有助于编程者解决复杂问题,同时可以让代码变简洁。
递归执行机制:

重要规则:
(1)执行一个方法时,就创建一个新的受保护的独立空间(栈空间)
(2)方法的局部变量是独立的,不会相互影响
(3)如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据
(4)递归必须向退出递归的条件逼近,否则就是无限递归
(5)当一个方法执行完毕,或者遇到return,就会返回,遵守:谁调用就将结果返回给谁,同时当方法执行完毕或返回时,该方法也就执行完毕。

Java类与对象,成员方法相关推荐

  1. 杨校老师课堂之Java类与对象、封装、构造方法

    杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...

  2. 最大公约数与最小公倍数( 初学Java 类与对象 )

    最大公约数与最小公倍数( java 类与对象的运用 ) Problem Description 输入两个正整数,求它们的最大公约数与最小公倍数. Input 输入两个正整数,两个整数之间用空格分开. ...

  3. Java类和对象(如何理解类和对象)

    Java类和对象 一.什么是对象? 1.什么是对象的属性? 2.什么是对象的行为 二.什么是类? 三. 类和对象的关系 四.类的定义 1.类的定义格式 2.类的定义示例 五.对象的使用 1.对象的创建 ...

  4. 【Java类和对象】

    Java类和对象 在Java简介中就有介绍到,Java是一门面向对象的编程语言,在面向对象的编程语言中,肯定离不开对象这个概念,而对象则是类的实例,所以也肯定离不开类这个概念.简单的来说就是,在Jav ...

  5. java类和对象在内存的表现形式

    Java内存分配与管理是Java的核心技术之一,不管学习任何一门语言,我们要知其然,知其所以然,本文主要分析下Java中类和对象在内存中的表现形式,方便我们对其有更深了解.一般Java在内存分配时会涉 ...

  6. 【Java】第7章 Java 类和对象 头歌Educoder实训作业(七)

    第1关:练习-Java类和对象之类的声明之复数运算 任务描述 本关任务:求两个复数相加后的结果. 两个复数之间相加的运算法则:实部与实部相加,虚部与虚部相加. 关于复数的定义,可以自行查阅,本实训不做 ...

  7. java 类与对象实验报告_java类与对象实验报告

    java类与对象实验报告 西 安 邮 电 大 学(计算机学院)课内实验报告实验名称: 类与对象 专业名称: 计算机科学与技术班 级: 计科1405班 学生姓名: 高宏伟 学 号: 04141152指导 ...

  8. JAVA类和对象(1)

    JAVA类和对象 1.类和对象的初步认识 2.类的实例化 3.类的成员 3.1 字段/属性/成员变量 3.2 null 3.3 引用的指向 3.3 方法 (method) 3.4 static关键字 ...

  9. 实验2 Java类和对象的设计

    实验题目:Java类和对象的设计 一.上机目的和要求 理解面向对象的编程思想.类与对象的概念: 加深理解封装性.继承性和多态性: 掌握this.super.final.static等关键字的使用: 掌 ...

  10. java 类与对象、封装、构造方法

    java 类与对象.封装.构造方法 面向对象 类与对象 三大特征--封装 构造方法 第1章 面向对象思想 1.1 面向对象思想概述 概述 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种 ...

最新文章

  1. numpy中线性代数库的使用Linear Algebra
  2. [architecture]-AMBA AXI AHB APB学习总结
  3. oracle数据库扩展目录,Oracle 扩充磁盘空间
  4. # 管道已结束_县城这条路启用自来水新管道,看看是否在你家附近...
  5. Android之Junit测试类
  6. 一些jquery的使用方法
  7. python程序调用函数的过程_Python_自定义函数_使用_运行流程
  8. js对象(Object)和字符串(String)互转 - 代码篇
  9. oracle test传入参数,oracle存储过程,test(测试)时传自定义类型参数问题
  10. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-10项目各种全局帮助类
  11. Linux下搭建CACTI的时候总结的一些小知识
  12. 你有没有思考过,特斯拉为什么先进?
  13. linux samba 断点续传,利用cURL实现单个文件分多段同时下载,支持断点续传
  14. 关于快递查询接口的实现
  15. JavaScript 案例综合提升
  16. 解决:CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pk gs/main/win-64/c
  17. rust纯黑_你可能不知道:黑波斯的黑色毛发其实有6种不同的类型
  18. QST培训环境安装与配置
  19. FPGA单独下载固化文件的解决方案
  20. 本固枝荣 —— Java关键字之分类

热门文章

  1. activemq配置wss协议
  2. 进程饥饿和死锁及饿死
  3. 成都大数据急需人才培养基地落地天府软件园
  4. VB基础版版务处理_20051011
  5. 暗影精灵6加装M.2固态硬盘详细教程
  6. linux查看磁盘性能sar,基于sar分析磁盘IO性能
  7. Ubutun20.0.4搭建Opengrok1.3.16查看Android源码
  8. 爱普生Epson L3158 一体机驱动
  9. Linux上用到的一些内容整理
  10. 并行算法笔记(一)——性能测评