方法的重载与重写
- 一、方法的重载与重写
- 1、回顾方法的定义
- 2、重载的概念
- 3、重写
- 二、this关键字
- 1、何为this方法
- 2、使用方法
- (1)在构造方法中指构造器所创建的新对象
- (2) 方法中指调用该方法的对象
- (3) 在类本身的方法或构造器中引用该类的实例变量(全局变量)和方法
- 3、注意事项
- 三、super关键字
一、方法的重载与重写
1、回顾方法的定义
权限修饰符 返回值声明 方法名称(参数列表){方法中封住样的逻辑功能;return 返回值【返回值void类型,不用写return】
}
2、重载的概念
(1) 必须同一个类中
(2) 方法名相同
(3)方法的参数的个数,顺序或类型不同
(4) 与方法的修饰符和返回值都没有关系
package com.itheima.springboottest;import javax.print.DocFlavor;public class Person {String name;int age;String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}private void myPrint(){System.out.println("这里是父类重载方法1");}private int myPrint(int age,String name){System.out.println("这里是父类重载方法1");return 1;}private int myPrint(String name,int age){System.out.println("这里是父类重载方法1");return 1;}}
3、重写
(1) 重写发生在父类无法满足子类需求的时候,需要进行重写
(2) 重写的注意事项
① 重写的方法必须要和父类一模一样(包括返回值类型,方法名,参数列表)
② 重写的方法可以使用@Override
注解来标识
③ 子类中重写的方法的访问权限不能低于父类中方法的访问权限
private<默认<protectde<public
package com.itheima.springboottest;public class Family{protected void myPrint(){System.out.println("我是父类方法");}
}class Firstson extends Family{public void myPrint(){System.out.println("我是子类重写父类方法");}
}class FamilyTest {public static void main(String[] args){Firstson son = new Firstson();son.myPrint();}
}
二、this关键字
1、何为this方法
JAVA为了解决变量的命名冲突和不确定性问题,引入关键字this代表所在方法的当前对象的引用;
2、使用方法
(1)在构造方法中指构造器所创建的新对象
public class B{A a;public B(A a){this a = a;}
}
(2) 方法中指调用该方法的对象
public class Baby{public void wakeup(){System.out.println("宝宝醒了");}public void eat(){this.wakeup();System.out.println("宝宝醒了");}}
(3) 在类本身的方法或构造器中引用该类的实例变量(全局变量)和方法
public void setName(String name){this.name=name;
}
3、注意事项
this只能在类的非静态方法中使用,静态方法和静态代码块中绝对不能出现this
static修饰的方法在类加载中就已经存在了,单数对象在创建时才会在内存中生成
三、super关键字
1、 super是存在于子类方法中,用于指向子类对象中的父类对象,可以访问父类的属性,函数以及构造函数
2、 子父类存在着同名的成员(包括变量和方法)时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员
3、 默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法
package com.itheima.springboottest;public class Family{protected void myPrint(){System.out.println("我是父类方法");}
}class Firstson extends Family{public void myPrint(){super.myPrint();System.out.println("我是子类重写父类方法");}
}class FamilyTest {public static void main(String[] args){Firstson son = new Firstson();son.myPrint();}
}