this、super关键字/重载与重写的一些区别

补充与拓展(this、super关键字)(重载与重写)

1 、 this关键字

​ this关键字是Java中常用的关键字,它表示当前类的当前对象本身,明确的说明this代表当前对象的一个引用。this只能出现在类的构造方法或者方法中,获得当前类的对象引用。引用即对象的别名,通过引用可以访问该对象,包括了对象的成员变量、调用对象的方法,但是引用不能作为内存地址使用,仅仅是作为对象的名字使用!《本类对象的引用

​ 多数情况下可以省略,都可以省略。必须出现(不能省略)的情况:1、当成员变量名和局部变量名相同时(不同名时是可以省略的);2、构造方法间相互调用(使用this方式调用其他构造方法时,this语句必须放在构造方法的第一行,并且传递所调用构造方法必须的参数,系统会根据this中的参数个数和类型来匹配类型的构造方法。同时this语句只能使用一次。只能在构造方法中调用类自身的构造方法。)。

public class text99 {
	public static void main(String[] args) {
		Man a = new Man();
		a.set("Java大爷", 18, '男');//实参传出
         a.setId(1995);
		a.get();
	}
}
class Man{
	//定义成员变量,并封装
	private String name;
	private int age;
	private char sex;
    private int ID;
	//成员方法,间接提供访问成员变量
	public void set(String name, int age, char sex) {
		//this关键字指明当前关键字是此类里面定义的成员变量,等号后面的是形参
		//同名必须使用this,this指明了当前对象具有的成员变量,本类的和传入的局部变量不冲突
		this.name = name;
		this.age = age;
		this.sex= sex;
	}
    public void setId(int a){
        ID = a;//this 省略(不同命名)
    }
    
	public void get() {
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
		System.out.println("性别:"+sex);
        System.out.println("ID:"+ID);
	}
}

2 、 super关键字

​ “super”关键字代表超类对象。在Java语言中,超类和派生类属性初始化是各种分开完成的。构造方法不能重载但是通过super关键字,在派生类构造方法中是可以调用超类的构造方法的。派生类调用超类的构造方法,以初始化超类的继承属性。

public class text6 {
	public static void main(String[] args) {
		System.out.println("----------无参调用------------");
		new son1();
		System.out.println("----------有参调用------------");
		new son1("萝莉");
	}
}

class fuqin{
	private String name;
	private int age;
	
	public fuqin() {
		System.out.println("无参构造");
	}
	public fuqin( String name) {//形参,接收实参传递来的名字
		System.out.println("超类的有参构造方法!");
		this.name = name;//超类的名字 被定义为传递来的名字
		System.out.println(this.name);//输出超类当前的名字
	}
}
class son1 extends fuqin{
	public son1() {
		//super();默认存在
		System.out.println("派生类的构造方法");
	}
	public son1(String name) {
		super(name);
	}
}
<============ 结果演示 ====================================================>
    ----------无参调用------------
    无参构造
    派生类的构造方法
    ----------有参调用------------
    超类的有参构造方法!
    萝莉

super()用在对象的构造方法中,将构造细节通过继承链往上传递。
​ 超类不带参数时的构造方法,在派生类的构造方法中的第一行会默认的有“super()”,它是省略的。当构造方法带参数时,super(参数)是不可省略的,并且需要与超类中相应的参数类型传递。
​ 除了调用直接超类的构造方法,通过派生类中使用super做前缀还可以引用被派生类覆盖(重写)的内容。当属性被重写时,用“super.属性名”来引用超类的的属性。当方法被重写时,用“super.方法名(参数列表)”的方式来调用超类的方法。

3 、 this和super的区别

1、 this代表本类对象的引用,super代表父类对象的引用。
2、 this用于区分局部变量和成员变量
3、 super用于区分本类变量和父类变量
4、 this.成员变量 this.成员方法() this(【参数】)代表调用本类内容
5、 super.成员变量 super.成员方法() super(【参数】),代表调用父类内容
6、 this和super不可以同时出现在同一个构造方法里,**他们两个只要出现都得放在第一行,不能同时出现**

4 、 重载与重写的区别

重载:

​ 见 ——Java方法;

重写:

​ 派生类继承后超类后,派生类就拥有了超类的功能,但并不局限于超类的功能,可以增加自己的功能,也可以舍弃一些超类的功能。 由此在子类中,可以添加子类特有的功能也可以修改父类的原有功能,由此对超类的原方法进行从新写入内容。(不是修改超类的源码,它依旧存在,只是派生类里面的方法发生了改变)
​ 子类中方法签名与父类完全一样(包括方法的返回值,方法名和参数列表,完全一致)时,会发生覆盖/复写操作,相当于修改功能。
​ 注意:
1、父类中的私有方法不能被重写
​ 2、子类重写父类方法时,修饰符要大于等于父类修饰符的权限

区别:
1、重载:是指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同
2、重写:是存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表和相同的返回类型
3、重写是父类与子类之间多态性的一种表现
4、重载是一类中多态性的一种表现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值