5.4 成员变量的隐藏和方法重写

5.4.1 成员变量的隐藏

子类隐藏成员变量的特点:

(1)子类对象、子类自己定义的方法操作与父类同名的成员变量,是指子类自己声明的这个成员变量

(2)子类对象仍然可以调用从父类继承的方法,来操作被子类隐藏的父类成员变量(即,继承方法操作的成员变量,一定是子类继承父类或者隐藏了的父类成员变量)

//例子1:
public class Example5_3_One {
	int a = 1;
	int b ;
}

public class Example5_3_Two extends Example5_3_One {
	int sum;
//	int a=10;
	public int youAre(int s) {
		sum = s +a ;
		return sum;
	}
}

public class Example5_3 {
	public static void main(String[] args) {
		Example5_3_Two two = new Example5_3_Two();
		int i = 10;
		int jj = two.youAre(i);
		System.out.println(jj);
	}

}
//调用了父类的a,输出结果为11

//例子2:
public class Example5_3_One {
	int a = 1;
	int b ;
}

public class Example5_3_Two extends Example5_3_One {
	int sum;
	int a=10;
	public int youAre(int s) {
		sum = s +a ;
		return sum;
	}
}

public class Example5_3 {
	public static void main(String[] args) {
		Example5_3_Two two = new Example5_3_Two();
		int i = 10;
		int jj = two.youAre(i);
		System.out.println(jj);
	}

}
//子类声明的a与父类同名,隐藏了父类的a,调用了子类a,输出结果为20


注意:

(1)子类继承的方法只能操作子类继承和隐藏的成员变量

(2)子类新定义的方法可以操作子类继承和子类新声明的成员变量,但是无法操作子类隐藏的成员变量。

(3)隐藏的成员变量可以使用关键字super操作


5.4.2  方法重写

子类通过重写可以隐藏已经继承的方法(也称方法覆盖)

1.重写规则:

(1)该方法是子类继承父类而来

(2)子类定义一个方法,方法的类型(或者父类方法的子类型)、名字、参数个数、参数类型和父类完全相同

(3)重写父类方法时不允许降低方法的访问权限,但是可以提高访问权限(从高到低:public-protected-友好的-private)

*注意:1.所谓子类型是,如果父类方法的类型是“类”,那么允许子类的重写方法类型是“子类”;2.子类如此定义的方法称作子类重写的方法,不属于新增方法


2.重写目的

(1)通过重写隐藏已继承的方法

(2)通过重写将父类的状态和行为改变为自身的状态和行为

(3)重写方法可以操作子类继承和子类新声明的成员变量、方法,但是无法操作子类隐藏的成员变量。隐藏的成员变量可以使用关键字super操作

//重写例子:
public class Example5_4_One {
	protected int a1 = 10;
	protected int b1 = 10;

	public int add(int a, int b) {
		return a + b;
	}
}

public class Example5_4_Two extends Example5_4_One {
	protected int a1 = 5;
	protected int b1 = 5;

	public int add(int a, int b) {
		return a * b + a1 + b1;
	}

}

public class Example5_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Example5_4_Two two = new Example5_4_Two();
		int sum = two.add(5, 5);
		System.out.println(sum);
	}
}
//重写了父类方法,输出结果为35,父类的a1、b1被隐藏了



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值