(1)构造方法和方法重载 (2)this关键字 (3)方法的传参和递归调用
1.构造方法和方法重载
如:
Person p = new Person(); - 声明Person类型的引用p指向Person类型的对象
p.show(); - 调用名字为show()的成员方法
1.1 构造方法(重中之重)
(1)语法格式
class 类名{
类名(形参列表){
构造方法体;
}
}
如:
class Person{
Person(){
}
}
(2)使用方式
a.构造方法的名称与类名完全相同,并且没有返回值类型,连void都不许有;
b.当创建新对象时会自动调用构造方法来进行该对象中成员变量的初始化工作;
(3)默认构造方法
当自定义类中没有编写任何构造方法时,则编译器会自动添加一个无参的空构造方法,该方法叫做默认/缺省构造方法,如:Person(){}。
若类中出现自定义构造方法,则编译器不再提供任何形式的构造方法。
练习:
自定义Point类,特征:横坐标和纵坐标,行为有:无参构造方法、有参构造方法、打印横坐标和纵坐标的方法。
自定义TestPoint类,在main()方法中先使用无参方式构造对象打印特征,再使用有参方式构造对象打印特征。
1.2 方法的重载(重点)
(1)基本概念
在Java语言中允许出现多个名称相同但参数列表不同的方法,称为:方法的重载(Overload)
(2)主要形式
方法重载的主要形式体现在:形参的个数不同、形参的类型不同、形参的类型顺序不同,
与形参变量名和返回值类型无关,但建议返回值类型最好相同。
判断方法能否重载的核心:在调用方法时能否加以区分。
(3)重载的意义
重载的意义在于调用者只需要记住一个方法名就可以调用各种不同的版本带来不同的结果。
如:
java.io.PrintStream类。
byte b1 = 10;
System.out.println(b1);
short s1 = 10;
System.out.println(s1);
int i1 = 10;
System.out.println(i1);
double d1 = 3.14;
System.out.println(d1);
2.this关键字(原理、理解)
2.1 基本概念
对于构造方法来说,this关键字就代表当前正在构造的对象;
对于成员方法来说,this关键字就代表当前正在调用的对象;
原理:
在每个成员方法中都隐含一个看不见的形参this,当不同的对象调用同一个方法时,会将不同的对象作为实参传递给this,此时this代表的对象不同,而访问成员变量时默认为this.的方式访问,那么this不同就会导致this.成员变量的结果不同。
(this.相当于汉语中"我的")
2.2 使用方式
(1)当形参变量名和成员变量名相同时,在方法体内会优先选择形参变量使用,若希望使用
成员变量,则需要在变量名的前面加上this.进行说明(重中之重)。
(2)在构造方法的第一行可以使用this(实参)的方式调用本类中的其他构造方法(了解)。
3.方法的传参和递归调用
3.1 方法的传参过程(理解)
(1)main()方法是程序的入口,为局部变量分配内存空间并初始化;
(2)调用max()方法,为max()方法的形参变量分配内存空间;
(3)将实参变量的数值赋值为形参变量;
(4)执行max()方法的方法体,方法执行完毕后释放形参变量的内存空间;
(5)main()方法得到max()方法的返回值,并继续向下执行;
(6)直到main()方法结束后,释放main()方法中局部变量的内存空间;
要求大家掌握的内容:
a.当使用基本数据类型作为参数传递时,形参变量的改变通常不会影响到实参的数值;
b.当使用引用数据类型作为参数传递时,形参变量指向内容的改变通常会影响实参的数值;
c.当使用引用数据类型作为参数传递时,若改变形参变量的指向后再改变指向的内容,
此时通常不会影响到实参的数值;
3.2 方法的递归调用(难点)
(1)基本概念
递归就是指在一个方法体的内部调用当前方法自身的形式。
案例:
自定义成员方法计算参数n的阶乘并返回。
解析:
5! = 5 * 4 * 3 * 2 * 1;
4! = 4 * 3 * 2 * 1;
3! = 3 * 2 * 1;
2! = 2 * 1;
1! = 1;
5! = 5 * 4!;
4! = 4 * 3!;
3! = 3 * 2!;
2! = 2 * 1!;
1! = 1;
n! = n * (n-1)!;
(2)使用方式
a.寻找递归的规律并指定退出条件;
b.使用递归使得问题简单化而不是复杂化;
c.若递归算法影响程序的性能,则使用递推替代之;
(1)构造方法和方法重载 (2)this关键字 (3)方法的传参和递归调用的更多相关文章
- 构造方法及方法(重载)与this关键字的使用
一:构造方法的概念: 构造方法是一种特殊的方法,它是一个与类同名的方法.对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化.当类实例化一个对象时会自动调用构造方法. ...
- 要想学好Java编程,构造器、方法重载、this关键字、垃圾回收机制,这4关一定要过!
有人说,你应该关注时事.财经,甚至流行的电影.电视剧,才有可能趁着热点写出爆文:有人说,你别再写“无聊”的技术文了,因为程序员的圈子真的很小,即便是像鸿洋那样的招牌大牛,文章是那么的干货,浏览量有多少 ...
- 方法重载(overload)与方法重写(override)
一.方法重载: 在同一个类中,允许存在一个及以上的同名方法,只要他们的参数列表不同(参数的个数或者参数的类型不同)即可.注意方法重载与返回值类型.访问权限修饰符.和抛出的异常无关.重载是在本类中,与继 ...
- 方法重载(overroad)和方法覆盖(override)------java基础知识总结
a.什么是方法重载?(同一个类中)方法重载是指在同一个类中,出现方法名相同,参数列表不同的情况. b.什么是方法覆盖?(子父类中)方法覆盖是指在子类中,出现和父类一模一样的方法声明的时候,会运行子类的 ...
- python paramiko外部传参和内部调用命令的方法
学习了很久的python,但在工作中使用的时候,却发现不知道怎么传参进入到python中执行,所以这两天就研究 了python args怎么将外部参数传入到python中执行 1.首先使用python ...
- 方法构造和方法重载之奥特曼与大boss之战
知识点的总结: 1.类中的方法分为两类:1.普通方法: 2.构造方法. 2.构造方法的格式: public 类名(数据类型 参数名,...){ } 3.构造方法的用途: 1.实例化对象. 2. ...
- 【知了堂学习笔记】java 方法重载与重写的归纳
方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定 ...
- C#面向对象(OOP)入门—第一天—多态和继承(方法重载)
面向对象是什么 面向对象是一种基于对象的编程方法,它取代了仅仅依靠方法和流程的编程方式.面向对象的编程语言中,对象(object)其实就是指特定类型.或某个类的实例.面向对象使得编程人员更容易组织和管 ...
- 附录A培训实习生-面向对象基础方法重载(3)
就上一篇代码而言,你如果写Cat cat = new Cat();会直接报错错误 : 1 “Cat”方法没有采用“0”个参数的重载 E:\大话设计模式学习\BigDesignPattern ...
随机推荐
- Week5——团队选题&需求分析
Deadline: 2017-10-22 10:00PM,以博客发表日期为准. 评分基准: 按时交 - 有分(团队选题-5分,,团队贡献分-5分,需求分析-10分,原型设计-10分),检查的项目包括后 ...
- CUBA China 最新进展
各位关注CUBA平台的朋友,你们好! 距上次发布动态我们又沉默了大概两个月时间,这期间我们一直在翻译CUBA平台的文档.CUBA平台的开发文档相当丰富,所以这需要耗费较多的时间,至少比我们预想的时间要 ...
- 基于Ionic的移动框架搭建
- T24银行核心业务系统
T24银行核心业务系统 http://www.pianshen.com/search http://www.pianshen.com/article/8248107255/
- 【模板】埃拉托色尼筛法 && 欧拉筛法 && 积性函数
埃拉托色尼筛法 朴素算法 1 vis[1]=1; 2 for (int i=2;i<=n;i++) 3 if (!vis[i]) 4 { 5 pri[++tot]=i; 6 for (int j ...
- 我用ASP.NET缓存之SQL数据缓存依赖(SqlCacheDependency)
[名词解释] 缓存(Cache)依赖,大白话解释就是缓存是否更新依赖于其它Object.那么SqlCacheDependency指的就是Cache的数据更新依赖于SQL Server数据库表的变化( ...
- python 中迭代和遍历的区别
什么是迭代? 迭代就是重复运行一段代码语句块的能力.分为两种方式 使用递归函数 使用循环(for 或 while 循环) 假设有个需求,要按照降序打印10以下(包括10),0 以上的整数,用递归和循环 ...
- Java的Collection.sort()方法
Java中的Collection.sort()方法能使用泛型对对象的变量进行排序,下面是两种方法. 文件名:student.java import java.util.*; import com.su ...
- Centos7宽带连接
网上大多教程都是虚拟机上实现宽带连接的,但是实际有差别 装完系统最头疼的就是宽带连接 转自:centos创建宽带连接-EnchanterBlue-ChinaUnix博客 http://blog.chi ...
- 理解RESTFul和SOA
RESTFul:面向资源的架构(roa) RESTFul基于HTTP协议,是一种明确构建在客户端/服务端体系结构上的一种风格, rest是Representational State Transfer ...