方法覆写限制

方法覆写限制

  • 虽然利用方法的覆写可以更好的扩充父类的功能,但是对于覆写也是有其自身要求的:被覆写的方法不能够拥有比父类更加严格的访问控制权限。
  • 对于访问控制权限现在已经接触过三种:public > default(默认) >private。
  • private权限是最小的,如果父类方法中default权限定义,那么子类定义该方法的时候只能够使用public或者default,如果父类中的方法使用了public定义,那么子类中的方法只能够使用public定义。
    范例:
class JavaDemo 
{
	public static void main(String[] args) 
	{
		//子类的调用
		DatabaseChannel Dat = new DatabaseChannel();
		Dat.connect();
	}
}

class Channel
{	
	public void connect(){
		System.out.println("【Channel父类】进行资源的连接");
	}
}

class DatabaseChannel extends Channel//要进行数据库连接
{
	//子类对父类拥有的同种方法进行覆写
	 void connect(){//什么都不写,default默认权限,比父类的public权限更低
		super.connect();//调用父类的方法
		System.out.println("【DatabaseChannel子类】进行数据库的连接");
	}
} 

在这里插入图片描述
此时父类的方法使用了public定义,而子类的方法使用了default权限,权限更加严格了,那么这种覆写就有错误了。
private可以定义在属性上,也可以定义在方法上。

class JavaDemo 
{
	public static void main(String[] args) 
	{
		//子类的调用
		DatabaseChannel Dat = new DatabaseChannel();
		Dat.fun();
	}
}

class Channel
{	
	 void connect(){
		System.out.println("【Channel父类】进行资源的连接");
	}
	public void fun(){
		this.connect();//调用本类方法
	}
}

class DatabaseChannel extends Channel
{
	public void connect (){
		System.out.println("【子类】;连接数据库资源");
	}
} 

在这里插入图片描述
此时因为实例化的是子类并且覆写了此方法,所以执行的是子类的connect方法。此时加上private权限在父类上。

class JavaDemo 
{
	public static void main(String[] args) 
	{
		//子类的调用
		DatabaseChannel Dat = new DatabaseChannel();
		Dat.fun();
	}
}

class Channel
{	
	private void connect(){
		System.out.println("【Channel父类】进行资源的连接");
	}
	public void fun(){
		this.connect();//调用connect方法
	}
}

class DatabaseChannel extends Channel
{
	public void connect (){
		System.out.println("【子类】:连接数据库资源");
	}
} 

在这里插入图片描述
这时候的并不是覆写,因为父类的connect不可见,这个方法对于子类而言就相当于一个新定义的方法,与覆写没有任何关系。
在以后实际开发之中只要是定义方法。95%情况下都是用public,所以覆写时也使用public。
面试题:请结束Override与Overloaging区别?Overloading时返回参数是否相同?
中文含义、概念、权限、范围
区别:

OverloagingOverride
重载覆写
方法名称相同,参数类型以及个数不同方法名称、参数类型及个数都相同
没有权限被覆写方法不能拥有更严格的控制权限
发生在一个类中发生在继承关系类中

在进行方法重载的时候并没有对返回类型作出限制,但是好的习惯应该保持类型的一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值