Java中this与super的区别以及用法
2021-06-18 17:06
标签:strong this 动物 ati str 参数 set 函数 [] super()用法 super()函数在子类构造函数中调用父类的构造函数时使用,必须要在构造函数的第一行。 输出结果如下: 在此介绍下程序运行的顺序 首先main方法当然是程序入口,其次执行main方法里的代码,但并不是按顺序执行的, 执行顺序如下: 1.静态属性,静态方法声明,静态块。 2.动态属性,普通方法声明,构造块。 3.构造方法 注意:如果存在继承关系,一般都是先父类然后子类。 运行结果如下: 这是一个带参数的super方法 执行结果如下: (1)this调用本类中的属性,也就是类中的成员变量; String name; //定义一个成员变量name public class Student { //定义一个类,类的名字为student。 System.out.println(name);//不难看出这里将输出“我是构造函数” 最后一个是返回当前对象,使用return this; 不同点: 以上并非自己总结,有些来源网络,如有不同意见可以留言提出 Java中this与super的区别以及用法 标签:strong this 动物 ati str 参数 set 函数 [] 原文地址:https://www.cnblogs.com/xin-Felix/p/9706534.html 1 class Animal {
2 public Animal() {
3 System.out.println("我是一只动物");
4 }
5 }
6 class Cat extends Animal {
7 public Cat() {
8 super();//必须放在这里
9 System.out.println("我是一只小猫");
10 //super();//放在这里会报错
11 //如果子类构造函数中没有写super()函数,编译器会自动帮我们添加一个无参数的super()
12 }
13 }
14 class Test{
15 public static void main(String [] args){
16 Cat cat = new Cat();
17 }
18 }
我是一只动物
我是一只小猫
1 class A {
2 public A() {
3 System.out.println("A的构造方法");
4 }
5
6 public static int j = print();
7
8 public static int print() {
9 System.out.println("A print");
10 return 521;
11 }
12 }
13
14 public class Test1 extends A {
15 public Test1() {
16 System.out.println("Test1的构造方法");
17 }
18
19 public static int k = print();
20
21 public static int print() {
22 System.out.println("Test print");
23 return 522;
24 }
25
26 public static void main(String[] args) {
27 System.out.println("main start");
28 Test1 t1 = new Test1();
29 }
30 }
A print
Test print
main start
A的构造方法
Test1的构造方法
1 class Animal {
2 private String name;
3 public String getName(){
4 return this.name;
5 }
6 public Animal(String name) {
7 this.name = name;//这里将参数“小狗”传入给Animal中的name
8 }
9 }
10 class Dog extends Animal {
11 public Dog(String name) {
12 super(name);
13 }
14 }
15 class Test{
16 public static void main(String [] args){
17 Dog dog = new Dog("小狗");
18 System.out.println(dog.getName());//执行类Animal中的getName方法
19 }
20 }
小狗
this()用法
(2)this调用本类中的其他方法;
(3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。
private void SetName(String name) { //定义一个参数(局部变量)name
this.name=name;} //将局部变量的值传递给成员变量
public Student() { //定义一个方法,名字与类相同故为构造方法
this(“我是构造函数”);
}
public Student(String name) { //定义一个带形式参数的构造方法
}
}
1、super()主要是对父类构造函数的调用,this()是对重载构造函数的调用
2、super()主要是在继承了父类的子类的构造函数中使用,是在不同类中的使用;this()主要是在同一类的不同构造函数中的使用
相同点:
1、super()和this()都必须在构造函数的第一行进行调用,否则就是错误的
上一篇:点击表头切换升降序排序方式
下一篇:C语言实现的哈希表