super关键字的使用

一、super  能出现在实例方法构造方法中      

       1. 构造方法执行过程中一连串调用了父类的构造方法,父类的构造方法又继续向下调用它的父类的构造方法,但是实际上对象只创建了一个

        2.super(实参)的作用:初始化当前的父类类型特征,并不是创建新对象,实际上之创建了一个

        3.super关键字代表的就是“当前对象”的那部分父类型特征

        4.super不能在静态类型中使用,大部分情况下是可以省略的,省略后默认有一个super。

        5.如果父类中有super,子类中也有,想要在子类中访问父类的特征,super就不可以省略。在夫和子中有同名属性,或者说有相同方法,如果此时想在子类中访问父中的数据,必须使用“super.”加以区分。

        

class Animal{
	public void move(){
		System.out.println("Animal move!");
	}
}

class Cat extends Animal{
	// 对move进行重写。
	public void move(){
		System.out.println("Cat move!");
	}

	// 单独编写一个子类特有的方法。
	public void yiDong(){
		this.move();//子类的move
		//前面不写默认有this.
		move();//子类的move
		// super. 不仅可以访问属性,也可以访问方法。
		super.move();//父类的move
	}
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
public class Super{
	public static void main(String[] args){
		Vip v = new Vip("张三");
		v.shopping();
	}
}
class Customer {
	String name;
	public Customer(){}
	public Customer(String name){
		super();
		this.name = name;
	}

	public void doSome(){
		System.out.println(this.name + " do some!");
		System.out.println(name + " do some!");
		//错误: 找不到符号
		//System.out.println(super.name + " do some!");//Object类没有name属性
	}
}
class Vip extends Customer{

	// 假设子类也有一个同名属性
	// java中允许在子类中出现和父类一样的同名变量/同名属性。
	String name; // 实例变量

	public Vip(){
	}
	public Vip(String name){
		super(name);
		// this.name = null;
	}
	public void shopping(){
		/*
				this.name:当前对象的name属性
				super.name:当前对象的父类型特征中的name属性。
		*/
		System.out.println(this.name + "正在购物!"); // null 正在购物  子类的name
		System.out.println(super.name + "正在购物!"); // 张三正在购物   父类的name
		System.out.println(name + "正在购物!"); //null 正在购物   子类的name
	}
}

6.super()只能出现在构造方法的第一行,通过当前的构造方法去调用父类的构造方法 。

7.super不可以在静态方法中出现不然会报错

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值