概述
方法重载的概念、构造方法的概念和基本使用方法、面向对象的总结
- 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 概念
- 有些情况下,对象的同一种行为可能存在多种实现过程;
- 例如:人对象的吃行为,吃饭和吃药的过程就存在差异;
- 到底采用哪种实现形式,需求取决于调用者给定的参数;
public class Person {
public void eat(food a) {
//食物放入口中
//咀嚼
//咽下
}
public void eat(pill a) {
//食物放入口中
//喝水
//咽下
}
public void eat(chutty a) {
//食物放入口中
//咀嚼
//吐出
}
}
- 重载(Overload):一个类中定义多个相同名称的方法;
- 要求:
方法名称相同;
参数列表不同(类型、个数、顺序);
与访问修饰符、返回值类型无关; - 调用带有重载的方法时,需要根据传入的实参去找到与之匹配的方法;
- 好处:屏蔽使用差异,灵活,方便;
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 对象的创建过程
- 内存中开辟对象空间;
- 为各个属性赋予初始值;
- 执行构造方法中的代码;
- [将对象的地址赋值给变量] //[]中的内容可省略
对象的内存分配:
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 构造方法重载
- 构造方法也可以重载,遵循重载规则;
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 构造方法为属性赋值
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则指向这个对象;
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第十一天--面向对象之方法重载、构造方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复