方法的重载与重写
- 一、方法的重载与重写
- 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();
}
}