我是靠谱客的博主 想人陪音响,这篇文章主要介绍学习Java第十一天--面向对象之方法重载、构造方法,现在分享给大家,希望可以做个参考。

方法重载的概念、构造方法的概念和基本使用方法、面向对象的总结

    • 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
18
public 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
17
public 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
25
public 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
23
public 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
19
public 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
37
public 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第十一天--面向对象之方法重载、构造方法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部