Java学习之路【220418~220424】---super.和 方法重写/覆盖


一、super关键字

super代表的是父类的引用,用于访问父类的属性、方法和构造器

1.基本语法

访问父类的属性

super.属性名;

访问父类的方法

super.方法名(形参列表);

访问父类的构造器

super.(形参列表);

2.细节

  1. 在使用super之前,首先要有父子类的关系存在。
  1. 如果访问的属性,成员方法的访问修饰符是private(私有的)时,super关键字是不能直接访问的。
  1. 若想要访问private修饰的属性方法,我们可以在父类中创建Getting and Setting方法,然后调用super.getName() 和 super.setName(“修改的名字”),就可以访问了。
public class Father{
	private String name;
	//创建Getting and Setting方法
	public String getName(){
		return name;
	}
	public void setName(String name){
		this.name = name;
	}
}

  1. ⭐️super只调用父类,跳过本类的查找,当子类中有和父类中的属性和方法重名时,要访问父类的属性方法时,使用super;
    如果没有的话,有三种访问方式,(1)直接调用;(2)this.属性/this.方法();(3)super.属性/super.方法()
  1. 访问父类的构造器,super(参数列表),只能放在构造器的第一句,这里注意是使用在构造器中,且我们要知道 this 和 super 只能存在一个
    在前面的继承学习中,知道子类必须调用父类的构造器,对父类进行属性的初始化;当父类没有无参构造器而是有参构造器时,子类就要使用super()调用父类,使得初始化分工明确,父类属性由父类初始化,子类属性由子类初始化。
  1. 使用super时,当多个父类都有同名的成员(属性,方法)时,super遵循就近原则,在继承的关系中,方法程序的执行都是从子类查找开始,不断向高一级查找。

二、方法重写/覆盖(Override)

方法重写就是子类有一个方法,和父类的某个方法的名字,返回类型,参数一样,那么我们就说子类这个方法重写父类这个方法

1.原理

当我们使用测试类创建一个子类的对象时,并调用子类的方法,此时子类的方法和父类的方法构成重写,在调用子类的方法时,子类方法会覆盖父类的方法显示

代码如下 :

(测试类)

public class test{
	public static void main(String[] args){
		//在测试类中创建子类的对象
		Student student = new Student();
		student.say();//最终输出的是 Student类 say()方法
	}
}

(父类)

public class Person{
	public void say(){
		System.out.println("Person类 say()方法");
	}
}

(子类)

public class Student{
	public void say(){
		System.out.println("Student类 say()方法");
	}
}

2.方法重写/覆盖的细节

  1. 构成方法重写,要求子类的方法的参数、方法名称要和父类的方法参数、方法名称保持一致。
  1. (1)子类的返回类型要和父类的返回类型保持一致,或者是子类的返回类型是父类的返回类型的子类;
    (2)或者是创建两个类假如AA是父类,BB是子类,类的本质类似数据类型,所以我们再创建两个类,这两个类也是父子类的关系,并且在内建立一个返回类型为AA的method方法,在另外一个内建立一个返回类型为BB的method方法

(1)

public Object getInfo(){}
public String getInfo(){}
//String是Object的子类

(2)

public class test{
	public static void main(String[] args){
		Sub sub = new Sub();
	}
}
//method 构成方法重写
class Base{
	public AA method(){
		System.out.println("AA method()");
	}
}
class Sub extends Base{
	public BB method(){
		System.out.println("BB method()");
	}
}
class AA{
}
class BB extends AA {
}
  1. 子类的方法不能缩小父类的方法的访问权限(修饰符)
    也就是说 子类的修饰符的访问范围 >= 父类的修饰符的访问范围

三、总结

以上就是今天要讲的内容,本文介绍了 super方法重写 的使用,而super 和 方法重写都是我们学习面向对象编程的重要知识点。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云来喜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值