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)方法的传参和递归调用的更多相关文章

  1. 构造方法及方法(重载)与this关键字的使用

    一:构造方法的概念:             构造方法是一种特殊的方法,它是一个与类同名的方法.对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化.当类实例化一个对象时会自动调用构造方法. ...

  2. 要想学好Java编程,构造器、方法重载、this关键字、垃圾回收机制,这4关一定要过!

    有人说,你应该关注时事.财经,甚至流行的电影.电视剧,才有可能趁着热点写出爆文:有人说,你别再写“无聊”的技术文了,因为程序员的圈子真的很小,即便是像鸿洋那样的招牌大牛,文章是那么的干货,浏览量有多少 ...

  3. 方法重载(overload)与方法重写(override)

    一.方法重载: 在同一个类中,允许存在一个及以上的同名方法,只要他们的参数列表不同(参数的个数或者参数的类型不同)即可.注意方法重载与返回值类型.访问权限修饰符.和抛出的异常无关.重载是在本类中,与继 ...

  4. 方法重载(overroad)和方法覆盖(override)------java基础知识总结

    a.什么是方法重载?(同一个类中)方法重载是指在同一个类中,出现方法名相同,参数列表不同的情况. b.什么是方法覆盖?(子父类中)方法覆盖是指在子类中,出现和父类一模一样的方法声明的时候,会运行子类的 ...

  5. python paramiko外部传参和内部调用命令的方法

    学习了很久的python,但在工作中使用的时候,却发现不知道怎么传参进入到python中执行,所以这两天就研究 了python args怎么将外部参数传入到python中执行 1.首先使用python ...

  6. 方法构造和方法重载之奥特曼与大boss之战

    知识点的总结: 1.类中的方法分为两类:1.普通方法: 2.构造方法. 2.构造方法的格式:  public 类名(数据类型  参数名,...){ } 3.构造方法的用途:  1.实例化对象.  2. ...

  7. 【知了堂学习笔记】java 方法重载与重写的归纳

    方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定 ...

  8. C#面向对象(OOP)入门—第一天—多态和继承(方法重载)

    面向对象是什么 面向对象是一种基于对象的编程方法,它取代了仅仅依靠方法和流程的编程方式.面向对象的编程语言中,对象(object)其实就是指特定类型.或某个类的实例.面向对象使得编程人员更容易组织和管 ...

  9. 附录A培训实习生-面向对象基础方法重载(3)

    就上一篇代码而言,你如果写Cat cat = new Cat();会直接报错错误 : 1       “Cat”方法没有采用“0”个参数的重载 E:\大话设计模式学习\BigDesignPattern ...

随机推荐

  1. 修改MVC默认的pageBaseType以添加功能

    试想下在MVC的前端页面JS或者html中需要使用多语言,而后端的多语言是维护在资源文件中的,前端如果使用的话需要使用AJAX频繁的获取,一个页面中可能会存在大量的需要语言转换的地方,频繁使用AJAX ...

  2. ArchLinux - 安装指南

    Step 1 将镜像写入u盘 u盘从来不是唯一的选择,但多数人可能喜欢这么做. 我是在OS X上进行操作,如果你用的是windows,也许可以使用Image Writer for Windows或者U ...

  3. 一:Web

    一:Web介绍 1.Web:网页,网络 2.Web应用:运行在网络上的应用程序 3.网络应用程序分类:C/S B/S C/S 客服端(client)/服务器(server) 典型应用:QQ,YY B/ ...

  4. 【转】Java 异步处理简单实践

    同步与异步 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而异步则意味着某个处理过程可以允许多个线程同时处理. 异步通常代表着更好的性能,因为它很大程度上依赖于缓冲,是典型的使用空间 ...

  5. CSS相对定位|绝对定位(五)之z-index篇——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1855 补充于2016 ...

  6. java图形界面之图形化按钮

    要将按钮图形化,只需创建一个ImageIcon对象,将图形路径赋予ImageIcon对象,然后将该对象传递给按钮即可. 此处涉及eclipse中图形的路径设置,包括(项目路径下.非项目路径下.相对路径 ...

  7. 倒计时5,4,3,2,1css实现(count down from 5 to 1 using css)

    //count down from 5 to 1, a useful animation. show the code to you:   <!DOCTYPE html> <html ...

  8. webapi 后台跳转 后台输出html和script

    1.跳转 [HttpGet]public HttpResponseMessage LinkTo(){ HttpResponseMessage resp = new HttpResponseMessag ...

  9. Getting Started with Erlang

    Getting Started with Erlang Erlang is a great language that lets you build highly concurrent applica ...

  10. apply与call简单用法以及判断数组的坑

    1 typeof 和 instanceof var array = [];平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”. typeof 一般只能返回 ...