(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 ...
随机推荐
- 安装和使用mongodb
环境: Ubuntu 13.04 安装MongoDB $sudo apt-get install mongodb 会自动安装libpcrecpp0 libboost-system1.42.0 libb ...
- Struts2配置文件struts.xml的编辑自动提示代码功能
第一步:复制struts.xml头部地址 第二步:Window --->Preferences 第三步:XML--->XML Catalog--->Add 第四步:在Key中粘贴复制 ...
- ASP.NET MVC 获得 view 中的HTML并将其中的内容自动转换成繁体中文。
一.思路 1.获得 asp.net mvc 输出的 html 的字符串. 2.将拿到的 html 字符串中的简体中文转换成繁体中文. 3.输出 html. 二.实现 1.扩展 RazorView 视图 ...
- org.springframework.web.context.ContextLoaderListener 解决办法
最近部署ssm项目在tomcat,tomcat启动的时候发出org.springframework.web.context.ContextLoaderListener 错误 严重: Error con ...
- Java基础教程(18)--继承
一.继承的概念 继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...
- java基础之运算符与语句
一.运算符 1.算数运算符 运算符 名称 举例 + 加法 A等于10,B等于3 则A+B=13 - 减法 A等于10,B等于3 则A-B=7 * 乘法 A等于10,B等于3 则A*B=30 / 除法 ...
- easyUi datagrid鼠标经过提示单元格内容
此文章是基于 EasyUI+Knockout实现经典表单的查看.编辑 一. jquery.cellTip.js /** * 扩展两个方法 */ using('datagrid', function() ...
- WCF使用net.tcp传输文件
摘要:今天看了一些官方的资料和配置,简单写了一个WCF服务来传递一个文件,借此看看WCF传输大文件的能力,这里采用的是NetTcp绑定,之所以没有采用 basicHttpBinding是因为考虑这种方 ...
- 重温jQuery
Write Less, Do More! ——John Resig(jQuery设计者) 目录 基础知识 概况 编程访问DOM节点 基础知识 Web网页是有结构的HTML文档.浏览器分析HTML文档, ...
- java网络编程(TCP详解)
网络编程详解-TCP 一,TCP协议的特点 面向连接的协议(有发送端就一定要有接收端) 通过三次连接握手建立连接 通过四次握手断开连接 基于IO流传输数据 传输数据大小 ...