【知了堂学习笔记】java中this和super的用法

this

this表示当前类的对象,this可以用来修饰属性、方法、构造器。它在方法内部使用,即这个方法所属对象的引用;普通方法中,this总是指向调用该方法的对象;构造方法中,this总是指向正要初始化的对象。

this的用法:

1.直接引用,即this指向当前对象本身

public class TestDemo {
	public int age = 2;
	
	public void show() {
		this.age=3;
		System.out.println(age);
	}
	
	public static void main(String[] args) {
		TestDemo a = new TestDemo();
		a.show();
	}
}

2.区分同名的全局变量和局部变量

public class TestDemo {
	public int age = 2;
	
	public void show(int age) {
		System.out.println(this.age);
		System.out.println(age);
	}
	
	public static void main(String[] args) {
		TestDemo a = new TestDemo();
		a.show(6);
	}
}


3.调用本类的其它构造方法

public class TestDemo {
	public int age;
	
	public TestDemo(int age) {
		this.age = age;
		System.out.println(age);
	}
	
	public TestDemo() {
		this(8);
	}
	
	public static void main(String[] args) {
		TestDemo a = new TestDemo();
	}
}

this在使用过程中需注意以下几点:

1. this不能用于static方法,因为在static方法中不可以访问非static的成员 (不能用于mian方法) 。static修饰的方法是属于类的,该方法的调用者可能是一个类,而不是对象。如果使用的是类来调用而不是对象,则 this就无法指向合适的对象。所以static 修饰的方法中不能使用this。

2.通过this调用其它构造方法,必须位于方法(构造方法)第一句。


super

代表父类的对象,可以访问父类的属性、方法和构造器。

super的用法:

1.直接引用

public class TestDemo {
	public String name = "天天";
}
public class DemoSon extends TestDemo {
	public int age = 6;
	public void show() {
		System.out.println(super.name + "  " + age);
	}
	public static void main(String[] args) {
		DemoSon b = new DemoSon();
		b.show();
	}
}

2.子类与父类中的成员变量或方法同名

public class TestDemo {
	public String name = "天天";
	public void show() {
		System.out.println(name);
	}	
}
public class DemoSon extends TestDemo {
	public String name ="乐乐";
	public void show() {
		System.out.println(super.name);
		super.show();
	}
	public static void main(String[] args) {
		DemoSon b = new DemoSon();
		b.show();
	}
}

3.调用父类的构造函数

public class TestDemo {
	public String name = "天天";
	public TestDemo() {
		System.out.println("无参数的父类构造方法");
	}
	public TestDemo(String name) {
		System.out.println(name);
	}
}
public class DemoSon extends TestDemo {
	public String name ="乐乐";
	
	public DemoSon() {
		super("可乐");
	}
	public static void main(String[] args) {
		DemoSon b = new DemoSon();
	}
}

super在使用时需要注意以下几点:

1. super同样不能用于static方法(不能用于mian方法)。

2.通过super调用父类的构造方法,必须位于方法(子类构造方法)第一句。

3.Java不支持super多级调用,即super.super。


除了上面在使用this和super时需要注意的以外,还有几点比较重要。

1.this和super不能同时出现在一个构造函数里面。

2.如果没有显示调用超类的构造器,那么子类构造器就会默认调用超类的无参构造器,如果超类没有无参构造器,那么编辑器就会报错。例如:在父类中定义了一个有参数的构造函数(不定义,就只有默认不带参数的构造函数),子类通过super(),来调用父类的构造函数,此时编译器就会报错,超类中没有可用的默认构造器。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
了课是一个在线教育平台,提供了丰富多样的课程内容。其,flask web是其一门非常受欢迎的课程。 Flask是一个基于Python语言开发的轻量级Web用框架。它简洁易用,但功能强大,因此在Web开发被广泛用。Flask Web课程旨在教授学员如何使用Flask框架构建自己的Web用程序。 在Flask Web课程,学员将学习到如何搭建一个完整的Web用程序。首先,课程会介绍Flask框架的基本概念和使用方法,学员将了解如何创建Flask用和处理路由。接着,课程会涵盖数据库的使用,学员将学会如何与数据库进行交互,以存储和检索数据。 此外,Flask Web课程还会教授学员如何处理表单数据和用户认证。表单是Web常见的用户输入形式,学员将学习如何处理表单数据,并对用户输入进行验证和处理。同,课程还会介绍用户认证和授权的方法,以确保只有授权用户可以访问特定的页面或功能。 在课程的实践部分,学员将有机会建立自己的Web用程序。通过完成一系列的编程任务和项目,学员将用所学的识,并将其运用到实际项目。 总之,了课的Flask Web课程是一门全面而实践性强的课程,旨在帮助学员掌握使用Flask框架构建Web用程序的技能。无论是对于想要从事Web开发的人来说,还是对于已经有一定经验的开发者来说,这门课程都将带来很大的收益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值