【附章2Java面向对象编程】盘点关键字详解 this、super、final

❤写在前面
❤博客主页:努力的小鳴人
❤系列专栏:JavaSE超详总结😋
❤欢迎小伙伴们,点赞👍关注🔎收藏🍔一起学习!
❤如有错误的地方,还请小伙伴们指正!🌹

🔥系列传送门
【04章Java面向对象编程(下)】面向对象编程的必杀技【热榜】
【04章Java面向对象编程(中)】解密 继承性和多态性【热榜】
【04章Java面向对象编程(上)】万事万物皆对象的初体验【全站热榜第二】
【附章1Java数组中常见算法】图文并茂详解十大排序算法让您回味无穷
【03章Java数组】程序员必看数组详解
【02章Java基本语法】详细讲解让你重新认识Java基本语法和流程流程控制
【01章Java语言概述】Java学了很久了吧,快回来熟悉熟悉吧(详细)



一、this

  1. 介绍:在Java
    ●它在方法内部使用,表示这个方法所属对象的引用
    ●它在构造器内部使用,表示该构造器正在初始化的对象
  2. this 可以调用类的属性、方法和构造器
  3. 何时使用:当在方法内需要用到调用该方法的对象时,就用this
    具体的:我们可以用this来区分属性局部变量:比如:this.name = name
  4. 使用this,调用属性、方法:
class Person{ // 定义Person类
		private String name ;
		private int age ;
	public Person(String name,int age){
		this.name = name ;
		this.age = age ; }
	public void getInfo(){
		System.out.println("姓名:" + name) ;
		this.speak();
	}
	public void speak(){
		System.out.println(“年龄:” + this.age);
	}
}
  1. 使用this,调用当前对象:
class Person{ // 定义Person类
		String name;
	Person(String name){
		this.name = name;
		}
	public void getInfo(){
		System.out.println("Person类 --> " + this.name);
		}
	public boolean compare(Person p){
		return this.name==p.name;
	}
}
	public class PersonTest{
	
	public static void main(String args[]){
		Person per1 = new Person("张三") ;
		Person per2 = new Person("李四") ;
		per1.getInfo() ; // 当前调用getInfo()方法的对象是per1
		per2.getInfo() ; // 当前调用getInfo()方法的对象是per2
		boolean b = per1.compare(per2);
	} 
}
  1. 使用this调用本类的构造器:
class Person{ // 定义Person类
		private String name ;
		private int age ;
		public Person(){ // 无参构造器
		System.out.println("新对象实例化") ;
}
	public Person(String name){
		this(); // 调用本类中的无参构造器
		this.name = name ;
}
	public Person(String name,int age){
		this(name) ; // 调用有一个参数的构造器
		this.age = age;
}
	public String getInfo(){
		return "姓名:" + name + ",年龄:" + age ;
	}
}

二、super

  1. 使用super来调用父类中的指定操作:
    ●super可用于访问父类中定义的属性
    ●super可用于调用父类中定义的成员方法
    ●super可用于在子类构造器中调用父类的构造器
  2. super和this的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识
     
    super的追溯不仅限于直接父类
  3. 关键字super举例:
class protected Person {
		String name = "张三"; 
		protected int age;
	public String getInfo() {
		return "Name: " + name + "\nage: " + age;
	}
}
class Student extends Person {
		protected String name = "李四";
		private String school = "New Oriental";
	public String getSchool() {
		return school;
	}
	public String getInfo() {
		return super.getInfo() + "\nschool: " + school;
	}
}
	public class StudentTest {
	public static void main(String[] args) {
		Student st = new Student();
	System.out.println(st.getInfo());
	}
}

👌调用父类的构造器

  1. 子类中所有的构造器默认都会访问父类中空参数的构造器
  2. 当父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器。同时,只能”二选一”,且必须放在构造器的首行
  3. 如果子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器,则编译出错
  4. 调用父类构造器举例:
public class Person {
		private String name;
		private int age;
		private Date birthDate;
	public Person(String name, int age, Date d) {
		this.name = name;
		this.age = age;
		this.birthDate = d;
	}
	public Person(String name, int age) {
		this(name, age, null);
	}
	public Person(String name, Date d) {
		this(name, 30, d);
	}
	public Person(String name) {
		this(name, 30);
	}
}
public class Student extends Person {
		private String school;
	public Student(String name, int age, String s) {
		super(name, age);
		school = s;
	}
	public Student(String name, String s) {
		super(name);
		school = s;
	}
	// 编译出错: no super(),系统将调用父类无参数的构造器。
	public Student(String s) {
		school = s;
	}
}

👌this与super的区别

在这里插入图片描述

三、final

可使用关键字 final 来修饰,表示 最终的

  1. final标记的类不能被继承
  2. final标记的方法不能被子类重写
  3. final标记的变量(成员变量或局部变量)即称为常量
  4. 关键字final应用举例:
public final class Test {
		public static int totalNumber = 5;
		public final int ID;
	public Test() {
		ID = ++totalNumber; // 可在构造器中给final修饰的“变量”赋值
	}
	public static void main(String[] args) {
		Test t = new Test();
		System.out.println(t.ID);
		final int I = 10;
		final int J;
		J = 20;
		J = 30; // 非法
	}
}

🎁总结:this、super、final三个关键词的灵活运用会很好地改变代码量,了解其中细节也会减少平时那令人头疼的bug哈,做个笔记经常看看

👌 作者算是一名Java初学者,文章如有错误,欢迎评论私信指正,一起学习~~
😊如果文章对小伙伴们来说有用的话,点赞👍关注🔎收藏🍔就是我的最大动力!
🚩不积跬步,无以至千里书接下回,欢迎再见🌹

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 37
    评论
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

努力的小鳴人

鳴人将永远记住您的恩惠

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

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

打赏作者

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

抵扣说明:

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

余额充值