(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.若递归算法影响程序的性能,则使用递推替代之;

原文地址:https://www.cnblogs.com/sumboy/p/8604161.html

时间: 2024-10-11 22:04:54

(1)构造方法和方法重载 (2)this关键字 (3)方法的传参和递归调用的相关文章

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

有人说,你应该关注时事.财经,甚至流行的电影.电视剧,才有可能趁着热点写出爆文:有人说,你别再写"无聊"的技术文了,因为程序员的圈子真的很小,即便是像鸿洋那样的招牌大牛,文章是那么的干货,浏览量有多少?不到万吧:有人说,你别妄想在写作上面知识变现了,因为你写的文章真的很不优秀,我都不爱看! 我想说,你们说的话我都不爱听!我也懒得反驳,因为我没有成功,也就没有话语权,多说无益.我只想做一名执拗的程序员,静静地写文,哪怕只有一个读者--有时候,做一件事,并不是想要结果,仅仅只是因为心底那种

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

a.什么是方法重载?(同一个类中)方法重载是指在同一个类中,出现方法名相同,参数列表不同的情况. b.什么是方法覆盖?(子父类中)方法覆盖是指在子类中,出现和父类一模一样的方法声明的时候,会运行子类的函数,这种现象称为覆盖操作. 方法覆盖会发生在有继承关系的父类和子类之间,而且是在子类类型中,子类继承到父类的方法之后,觉得方法实现已经不足以满足新一代的要求了,于是就给出了新的方法实现. 覆盖注意事项: 子类方法覆盖父类方法时,子类权限必须大于等于父类中的权限. 静态只能覆盖静态或者被静态覆盖.

构造方法和方法重载小结

构造方法和方法重载  作用:创建类的时候同时初始化数据,在创建new的时候. 声明构造方法: public 类名; 比如 public BOOK(){}; 对象变量进行初始化的 创建new的时候自动调用. 自己写的有参数的构造函数 可以把值传给变量 构造方法简单上说是为了可以根据类属性需要更方便的创建对象举个例子 比如咖啡这个类咖啡的类型.成分就可以看成一种属性,咖啡的种类可以是拿铁,摩卡,咖啡材料可以有淡奶,糖,巧克力……根据需要想放材料什么就放什么.把材料作为参数传进去,就可以泡出咖啡(初始

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

就上一篇代码而言,你如果写Cat cat = new Cat();会直接报错错误 : 1       “Cat”方法没有采用“0”个参数的重载 E:\大话设计模式学习\BigDesignPatterns\附录A培训实习生之面向对象基础\动物运动会\AnimalGames\Form1.cs       20     23     AnimalGames 原因就是必要给小猫起名字.如果当真需要不起名字也要生出小猫来,可以采用方法重载. 方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参

java 方法重载与重写的归纳

方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法 示例代码: public class Test { //无返回值有有int形的参数 void receive(int i) {System.out.println("i="+i);} //无返回值,有float形的参数 void receive(float f) {Sys

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

知识点的总结: 1.类中的方法分为两类:1.普通方法: 2.构造方法. 2.构造方法的格式:  public 类名(数据类型  参数名,...){ } 3.构造方法的用途:  1.实例化对象.  2.初始化属性值. 4.构造方法和普通方法的区别:  1.返回值:构造方法一定不能定义返回值类型:构造方法的名字必须要和类名完全一致,包括大小写.  2.用途  3.名字 5.注意:java会给类提供一个无参数的构造方法(默认构造方法),如果你在类中定义了构造方法,  默认的构造方法会被覆盖,无法在使用

java中的方法重载和方法覆盖

方法重载的条件: 1.方法名称相同 2.方法参数类型.个数.顺序至少有一个不同 3.方法的返回类型可以不同,因为方法重载和返回类型没有任何关系 4.方法的修饰符可以不同,因为方法重载和修饰符没有任何关系 5.方法重载只出现在同一个类中 方法的覆盖(Override)的条件: 1.必须要有继承关系 2.覆盖只能出现在子类中,如果没有继承关系,不存在覆盖,只存在重载 3.在子类中被覆盖的方法,必须和父类中的方法完全一样,也就是方法名,返回类型. 参数列表,完全一样 4.子类方法的访问权限不能小于父类

方法重载,new,override

方法重载:参数列表不一样,方法名字一样,包括泛型,和返回值无关 new:   复写,方法重载    继承是对于普通方法和属性  复写 父类的 override:  覆盖,重写 ,  对于抽象方法和虚方法和接口,是多态的基础               方法被定义为final不能被重写.

Objective-c 类的继承 方法重写 方法重载

一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序. Objective-c中所有类的父类是NSObject. Objective-c中类的继承例子: [cpp] view plaincopy @interface Person: NSObject { NSString* name; int age; } - (NSString*) name; - (int)