Java面向对象-细节篇1(重写,重载,this,super)

方法重载(overload)

  1. 方法名必须相同
  2. 形参类型 或 形参顺序或形参个数不同(⚡形参名不同不可认为是重载)
  3. 返回类型,无要求特定类型
public class overLoad{
	public static void main(String[] args) {
		Oload o=new Oload();
		o.sum(1,2);
		System.out.println(o.sum('A'));
	}
}
class Oload{
	public void sum(int a,int b){
		System.out.println(a+b);
	}
	public char sum(char c){
		return (char)(c+32);
	}
}

方法重写(override)

~介绍:子类与父类有两个完全相同的方法(方法名,返回类型,参数列表);即为子类覆盖了父类方法

细节:

  1. 两个方法完全相同

  2. public Object f1(){}; public String f2(){};

    🚩当返回类型之间为父,子类关系,也满足重写(Object <- String)Object为所有类父类

  3. public void n1(){} void n2(){}

    不可缩小方法访问权限(上述反之则可)

示例

public class Override_(){
    public static void main(String[] args){
        Dog d=new Dog();
        Cat c=new Cat();
    }
}
class Animal{
    public void cry(){
        System.out.println("动物在呼叫。。。");
    }
	public Object Fson(){
       ⚡ //这里是父类方法,返回顶级类;是所有类的父类
    }    
}


class Dog extends Animal{
    public void cry(){
        System.out.println("狗在汪汪叫。。。");
    }
}
class Cat extends Animal{
     /*void cry(){
   		System.out.println("这里缩小了服了方法访问范围,编译报错")    
    }*/
    public String Fson(){
       ⚡ //如果父类方法为String,子类方法为Object则编译报错
    }
}

方法重载/重写区别:

名称 范围 方法名 参数列表 修饰符 返回类型
重载(overload) 本类 一致 🚩顺序,类型,个数必须有一样不同 不限 不限
重写(override) 父子类 一致 一致 可扩大 可为父子类




this关键字详解

  1. 用于区分属性和局部变量

    class Per{
     int age;
     String name;
     public void info(int age,String name){
         this.name=name;
         this.age=age;
     }
    }
    
  2. 访问成员方法

    public void v1(int mess){
     System.out.println(mess);
    }
    public void v2(){
     this.v1(980);
    }
    
  3. 访问构造器

    class Per{
     int info;
     public Per(){
         this(int messcode);//必须放在第一条
         System.out.println("ok");
     }
     public Per(int messcode){
         this.info=messcode;
     }
    }
    

    注意:this(参数列表)语法⚡只能在构造器中使用;⚡并且必须放在第一条语句

  4. 不可在类外使用,只能在类方法中使用

super关键字详解

~super 代表引用父类,用于访问父类属性,方法,构造器(不能访问private修饰的)

基本语法

  • 访问属性:super.属性名
  • 访问方法:super.方法名(参数列表)
  • 访问构造器:super(参数列表)(⚡只能在构造器使用,并且置于首行)

细节

  1. 针对父,子类同名属性方法

    n1; this.n1; cal(); this.cal(); 先找本类再找父类

    super.n1; super.cal(参数列表)不会查找本类是否有该属性,方法

  2. 若有多个类有同名属性,方法;遵循就近原则(访问到最近的属性,若为private则编译报错)

this/super区别:(在构造器中二者只能存在一个)

关键字 调用属性 调用方法 调用构造器 起始调用位置 注意
this this.name this.info() this(形参列表) 本类开始向上查找 在构造器中只能位于首行
super super.name super.info() super(形参列表) 跳过本类查找父类 在构造器中只能位于首行
posted @   Chair-0u98  阅读(22)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示