关键字super的作用意义

    由于子类可以覆盖父类的实例方法、隐藏父类的类方法、隐藏父类的字段等,但是我们有时候需要引用到父类的一些方法,这时候需要借助关键字super.

 

1.使用super关键字访问父类中的成员.

    1-1.调用父类中被覆盖的方法

    示例:

public class Superclass {
    public void printMethod() {
        System.out.println("在Superclass中的输出。");
    }
}
public class Subclass extends Superclass {
	//重写超类Superclass中的printMethod方法
    	public void printMethod() { 
        	super.printMethod();							//使用super关键字调用超类中的方法
        	System.out.println("在Subclass中的输出。");
    	}
}
public class ExtendsDemo7{
    	public static void main(String[] args) {    	
    		Subclass s = new Subclass();
    		s.printMethod();	
    	}
}

输出结果:

在Superclass中的输出.
在Subclass中的输出.

 

    1-2.访问父类中被隐藏的字段

    示例: 

// 父类A
class A{
	public String name = "张小明";
}

// A的子类B
class B extends A{
	public String name = "赵红丽";
	public void self( ){
		System.out.println("我的名字是:" + name);
		System.out.println("我原来的名字是:" + super.name);	//使用super访问超类中被隐藏的字段
	}
}
// 主程序ExtendsDemo8
public class ExtendsDemo8{
  public static void main(String[ ] args){
	B b = new B( );
	b.self( );
  }
}

输出结果:

我的名字是: 赵红丽
我原来的名字是: 张小明


2.使用super关键字调用父类的构造器:

    子类是不继承父类的构造器.因此,如果要初始化父类中的字段,可以在子类的构造器中,通过关键字super调用父类的构造器.对父类的构造器的调用必须放在子类的构造器的第一行.

    示例:

// 父类A
class A{
	A(){
		System.out.println("这里是超类A的构造器。");
	}
}

// A的子类B
class B extends A{
	B(){
		super();
		System.out.println("这里是子类B的构造器。");
	}
}

// 主程序ExtendsDemo9.java
public class ExtendsDemo9{
    public static void main(String[] args) {
		B b = new B();
    }
}

输出结果:

这里是超类A的构造器.
这里是子类B的构造器.


3.构造器连

    如果一个子类的构造器显式或隐式地调用其父类的一个构造器,而其父类会再显式或隐式地调用父类的父类的构造器.形成一个完整的构造器链.

    示例:

class Book {
    private String ISBN;
    Book(String isbn){
			this.ISBN = isbn;
    }
    public String getISBN(){
			return this.ISBN;
    }
    public boolean equals(Object obj) {
        if (obj instanceof Book)
            return ISBN.equals(((Book)obj).getISBN()); 
        else
            return false;
    }
}

public class ExtendsDemo11{
    public static void main(String[] args) {
		Book firstBook  = new Book("0201914670"); 
		Book secondBook = new Book("0201914670");
		if (firstBook.equals(secondBook)) {
    			System.out.println("两个对象相等.");
		} else {
    			System.out.println("两个对象不相等.");
		}
    }
}





输出结果:

这里是超类A的构造器.
这里是超类B的构造器.
这里是子类C的构造器.


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中的关键字是指具有特定含义和用途的保留字,不能作为标识符(变量名、类名、方法名等)使用。以下是Java中所有关键字作用: 1. abstract:抽象类或抽象方法的修饰符,表示该类或方法不可被实例化或调用,只能被子类继承或实现。 2. assert:断言语句的关键字,用于在代码中检查某个条件是否为真,如果不为真就会抛出一个 AssertionError 异常。 3. boolean:布尔类型的数据类型,表示真或假。 4. break:跳出循环或 switch 语句的关键字。 5. byte:字节类型的数据类型,表示-128到127之间的整数。 6. case:在 switch 语句中用于判断某个值是否等于某个常量。 7. catch:用于捕获异常的关键字,在 try-catch-finally 结构中使用。 8. char:字符类型的数据类型,表示单个字符。 9. class:声明一个类的关键字。 10. const:Java中没有实际意义,但为了与 C++ 兼容保留了该关键字。 11. continue:跳过当前循环中剩余的语句,执行下一次循环。 12. default:在 switch 语句中用于指定默认的分支。 13. do:循环语句的关键字,执行一个语句块,然后根据条件判断是否继续执行。 14. double:双精度浮点数类型的数据类型。 15. else:在 if 语句中用于指定条件不成立时执行的代码块。 16. enum:枚举类型的关键字,用于定义一组常量。 17. extends:表示一个类继承自另一个类的关键字。 18. final:修饰类、方法和变量,表示它们的值或引用无法改变。 19. finally:在 try-catch-finally 结构中,无论是否发生异常都会执行的代码块。 20. float:单精度浮点数类型的数据类型。 21. for:循环语句的关键字,用于执行一个语句块多次。 22. goto:Java中没有实际意义,但为了与 C++ 兼容保留了该关键字。 23. if:条件语句的关键字,用于判断某个条件是否成立。 24. implements:表示一个类实现一个接口的关键字。 25. import:引入一个包或类的关键字。 26. instanceof:用于判断一个对象是否属于某个类的关键字。 27. int:整数类型的数据类型。 28. interface:声明一个接口的关键字。 29. long:长整型数据类型。 30. native:表示一个方法是本地方法(由本地代码实现)的关键字。 31. new:创建一个新对象的关键字。 32. package:声明一个包的关键字。 33. private:表示一个方法或变量只能被同一个类中的其他方法或变量访问的关键字。 34. protected:表示一个方法或变量可以被同一个包中的其他类访问,或者被继承的子类访问的关键字。 35. public:表示一个方法或变量可以被任何类访问的关键字。 36. return:从方法中返回值的关键字。 37. short:短整型数据类型。 38. static:表示一个方法或变量属于类而不是属于对象的关键字。 39. strictfp:表示一个方法是严格遵守 IEEE 754 浮点数规范的关键字。 40. super:表示一个对象所属的超类的关键字。 41. switch:多分支语句的关键字。 42. synchronized:表示一个方法或代码块是线程安全的关键字。 43. this:表示当前对象的关键字。 44. throw:用于抛出异常的关键字。 45. throws:用于声明某个方法可能会抛出的异常的关键字。 46. transient:表示一个变量不会被序列化的关键字。 47. try:异常处理语句的关键字。 48. void:表示一个方法不返回任何值的关键字。 49. volatile:表示一个变量是易变的(可能会被多个线程同时访问)的关键字。 50. while:循环语句的关键字,用于执行一个语句块多次,直到条件不成立为止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值