方法重载的概念、构造方法的概念和基本使用方法、面向对象的总结
- 7.4 方法重载
- 7.4.1 概念
- 7.4.2 代码调错
- 7.5 构造方法
- 7.5.1 概念
- 7.5.2 对象的创建过程
- 7.5.3 构造方法重载
- 7.5.4 默认构造方法
- 7.5.5 构造方法为属性赋值
- 7.5.6 this关键字
- 7.6 总结
7.4 方法重载
7.4.1 概念
- 有些情况下,对象的同一种行为可能存在多种实现过程;
- 例如:人对象的吃行为,吃饭和吃药的过程就存在差异;
- 到底采用哪种实现形式,需求取决于调用者给定的参数;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public class Person { public void eat(food a) { //食物放入口中 //咀嚼 //咽下 } public void eat(pill a) { //食物放入口中 //喝水 //咽下 } public void eat(chutty a) { //食物放入口中 //咀嚼 //吐出 } }
- 重载(Overload):一个类中定义多个相同名称的方法;
- 要求:
方法名称相同;
参数列表不同(类型、个数、顺序);
与访问修饰符、返回值类型无关; - 调用带有重载的方法时,需要根据传入的实参去找到与之匹配的方法;
- 好处:屏蔽使用差异,灵活,方便;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class TestCalculator { public static void main(String[] args) { Calculator calc1 = new Calculator(); System.out.println(calc1.add(5, 6)); System.out.println(calc1.add(10.2 , 11.3 , 15.6 )); } } //计算器 class Calculator{ public double add(double num1 , double num2) { return num1 + num2; } public double add(double num1 , double num2 , double num3) { return num1 + num2 + num3; } }
7.4.2 代码调错
- 思考:以下方法是不是重载?
public void m(int a){}
public void m(int b){} - 两个方法的方法名称和参数列表都相同,只有参数名称不一样,编译报错
- 注意:只是参数名称不同,并不能构成方法的重载;
7.5 构造方法
7.5.1 概念
- 构造方法:类中的特殊方法,主要用于创建对象;
- 特点:
名称与类名完全相同;
没有返回值类型; - 创建对象时,触发构造方法的调用,不可通过句点手动调用;
- 注意:如果没有在类中显示定义构造方法,则编译器默认提供无参构造方法;
- 建议:必须手动添加无参的构造方法
7.5.2 对象的创建过程
- 内存中开辟对象空间;
- 为各个属性赋予初始值;
- 执行构造方法中的代码;
- [将对象的地址赋值给变量] //[]中的内容可省略
对象的内存分配:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25public class TestConstractor { public static void main(String[] args) { //1.执行new Student2()构造对象 //1.1 堆内存中开辟对象空间 //1.2 将构造后的对象地址,赋值给stu1变量 Student2 stu1 = new Student2(); stu1.sayHi(); } } class Student2{ String name; int age; char sex; double score; public Student2() { //2.构造方法执行过程分两步: //2.1 初始化属性 //2.2 执行构造方法中的逻辑代码 System.out.println("---无参的构造方法---"); }// 执行完构造方法后返回方法调用处 public void sayHi() { System.out.println("Hello"); } }
7.5.3 构造方法重载
- 构造方法也可以重载,遵循重载规则;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23public class TestConstractorOverload { public static void main(String[] args) { new Teacher2(); new Teacher2("jake"); new Teacher2("Alex" , 30); } } class Teacher2{ String name; int age; String sex; double salary; public Teacher2() { System.out.println("---无参的构造方法---"); } public Teacher2(String n) { System.out.println("---1参的构造方法---"); } public Teacher2(String n , int a) { System.out.println("---2参的构造方法---"); } }
7.5.4 默认构造方法
7.5.5 构造方法为属性赋值
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19public class TestConstructors{ public static void main(String[] args){ Student s = new Student("tom",20,"man","98.5"); System.out.println(s.name+"t"+s.age+"t"+s.sex+"t"+s.score); } } class Student{ String name; int age; String sex; double score; public Student(String n,int a,String s,double sc){//由构造方法为各个属性赋值 name = n; age = a; sex = s; score = sc; } }
7.5.6 this关键字
- 类是模板,可服务于此类的所有对象;
- this是类中的默认引用,代表当前实例;
- 当类服务与某个对象时,this则指向这个对象;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37public class TestThisKeyword { public static void main(String[] args) { Student3 str = new Student3("tom" , 20 , "male" , 99.8); str.sayHi(); } } class Student3{ String name; int age; String sex; double score; public Student3(){} public Student3(String name) { this();//this([实参]);必须写在构造方法的首行;仅可在构造方法中使用 System.out.println("---1参的构造方法---"); this.name = name; } public Student3(String name , int age) { this(name); System.out.println("---2参的构造方法---"); this.age = age; } public Student3(String name , int age , String sex) { this(name , age); System.out.println("---3参的构造方法---"); this.sex = sex; } public Student3(String name , int age , String sex , double score) { this(name , age , sex ); System.out.println("---4参的构造方法---"); this.score = score; } public void sayHi() { System.out.println(this.name+"t"+this.age+"t"+this.sex+"t"+this.score); } }
-
this第一种用法:调用实例属性、实例方法。
如:this.name、this,sayHi() -
this第二种用法:调用本类中的其他构造方法。
如:this()、this(实参)
7.6 总结
-
什么是对象:
一切客观存在的事物都是对象,万物皆对象; -
什么是类:
定义了对象应具有的特征和行为,类是对象的模板; -
什么是方法重载:
方法名相同、参数列表不同; -
什么是构造方法:
类中用于创建对象的特殊方法,名称与类名相同,没有返回值,不可通过句点调用 -
什么是this关键字:
代表当前实例,通过this.访问实例成员;通过this()/this(xxx)访问本类中的其他构造方法
最后
以上就是想人陪音响最近收集整理的关于学习Java第十一天--面向对象之方法重载、构造方法的全部内容,更多相关学习Java第十一天--面向对象之方法重载、构造方法内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复