`
wisgood
  • 浏览: 15017 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

JAVA 覆写 重载 隐藏 遮蔽

 
阅读更多
复写(Override)
复写发生在继承中,针对的是方法。从字面意思上我们可以这样理解,已经有了一个方法,现在重新定了一个方法,把原来的覆盖了。 
如果父类中定义了一个在子类中可见的方法,子类重新了定义了个方法,该方法和父类中的方法名字、参数列表、返回值都是一样的,并且访问权限不小于父类中该方法的权限,那么称之为子类中的方法复写了父类中的方法。
class Base {
private void a(){}
protected void b(){}
public void c(){}
void d(){}
}


class Derived extends Base{
private void a(){}
public void b(){} //Override Base.b()
public void c(){} //Override Base.c()
public void d(){} //Override Base.d()
}

很显然,Dericed方法复写了Base类中的b、c、d方法,a方法并不是复写,因为Base中的a方法在Derived中是不可见的,当然谈不上复写。

隐藏(Hide)
隐藏(Hide)
隐藏发生在继承中,针对的是域、静态方法或者成员类型。
子类可以隐藏父类中可以访问到的具有相同名字的所有域、静态方法或者成员类型。隐藏一个成员会阻止其被继承。
class Base {
private int a = 0 ;
public int b = 0;
private static void a(){};
public  static void b(){};
private class Student{}
public class Teacher{}

}

class Derived extends Base{
private int a = 1;//没有被隐藏,因为父类中的字段在子类中式不可见的
public int b = 1 ;//hide base.b
private static void a(){};//没有被隐藏,因为父类中的字段在子类中式不可见的
public  static void b(){};//hide base.b
private class Student{}//没有被隐藏,因为父类中的字段在子类中式不可见的
public class Teacher{}//hide base.Teacher
}


重载(Overload)
重载针对的是方法,指的是两个方法具有相同的名字但具有不同的签名。
class Overload
{
public void f(int i){}
public void f(String i){}//是chongza
public int f(int i){}//错误,不能根据方法返回值进行重载,因为这样编译器
                             //会遇到问题,
}

遮蔽(Shadow)
一个变量、方法后者类型可以分别遮蔽在一个闭合的文本范围内的具有相同名字的素哟有变量、方法或者类型。如果一个实体被遮蔽了,那么你用它的简单名是无法引用到它的。

class Shadow
{
static String sentence = "Hello,world";
public static void main(String[] args)
{
String sentence = "hello,world";//Shadow static field

}
}
分享到:
评论

相关推荐

    重载与覆写/重写的区别

    重载与覆写/重写的区别 区别 重载 覆写 1 单词 OverLoading Override 2 概念 方法名称相同,参数的类型或个数不同 方法名称相同,参数的类型或个数相 同,返回值类型相同 3 范围 发生在一个类之中...

    详解java重载与覆写的区别

    Java中的重载(Overloading)和覆写(Overriding)是面向对象编程中的两个关键概念,它们都是实现多态性的方式,但有着本质的区别。 **重载(Overloading)**: 重载是指在同一个类中可以有多个同名方法,但这些方法的...

    Java的覆写操作实例分析

    Java的覆写操作实例分析 Java的覆写操作是一种常见的面向对象编程技术,通过覆写操作,可以实现子类继承父类的属性和方法,并对其进行修改和扩展。本文将通过实例分析,详细介绍Java的覆写操作,包括属性覆写和...

    行业分类-设备装置-一种数据覆写方法.zip

    在IT行业中,数据覆写是一种常见的数据安全处理技术,尤其在设备装置的管理与保护中扮演着重要角色。本文将详细解析标题“行业分类-设备装置-一种数据覆写方法”所涉及的知识点,以及从描述中我们可以推测的关于数据...

    Java重写equals及hashcode方法流程解析

    "Java重写equals及hashcode方法流程解析" Java中的equals和hashCode方法是两个非常重要的方法,它们都是Object类中的方法。在实际开发中,正确地重写这两个方法对于确保程序的正确性和性能至关重要。下面,我们将...

    The Java Language Specification, Java SE 12 Edition.rar

    Java 12可能对方法的重载和覆写有更明确的规定。 4. 控制流:Java提供了多种控制流结构,如if-else、switch、for、while等,用于决定程序执行的顺序。Java 12可能引入了新的控制结构,以提高代码的可读性和效率。 ...

    Java知识表格,java ee,java web

    - **方法的重载与覆写**:区分方法的重载与覆写。 - **super与this关键字的区别**:比较super与this的用法及差异。 - **继承的图形表示**:使用图形展示继承关系。 ##### 15. 面向对象高级(03) - **final关键字**...

    Java 中文API 谷歌翻译

    Java API文档是Java开发者的重要参考资料,它详细列举了Java开发工具包(JDK)中的类、接口、方法和常量等元素,为编程提供指导。谷歌翻译版的JDK 1.8 API中文文档则是为了方便中国开发者阅读,将原本英文的API说明...

    Effective Java第三版1

    《Effective Java》是Java编程领域的一本经典著作,由Joshua Bloch撰写,它提供了许多最佳实践和设计原则,帮助开发者写出更高效、更可维护的代码。第三版延续了这一传统,对Java语言的新特性进行了更新,并给出了...

    javascript 方法覆写实例代码

    知识点一:JavaScript中的方法覆写 在JavaScript中,方法覆写是一个常见的概念,它指的是在子类或者函数作用域中重新定义一个与父类或者外部作用域中同名的方法,以实现特定的功能。方法覆写通常用于实现多态性,即...

    黑马程序员入学Java精华总结

    5. **什么是方法的重载(Overload)** - 在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可。 6. **可变参数** - Java允许方法接收不定数量的参数,使用省略号`...`表示。 7. **数组简介**...

    面试题集锦(C#,java)

    - Java中覆写必须显式使用`@Override`注解,如果没有,则是隐藏父类方法。 17. **参数传递**: - C#支持`ref`和`out`参数,允许传递引用。 - Java只支持值传递,但可以使用`final`局部变量实现类似效果。 18. *...

    覆写

    - Java:在Java中,覆写是通过在子类方法声明中使用`@Override`注解来明确表示的。这样可以确保子类方法确实覆盖了父类的某个方法,如果方法签名不匹配,编译器会报错。 ```java public class Parent { public ...

    覆写Feign的默认配置-代码部分.zip

    本篇将详细介绍如何覆写Feign的默认配置,以满足特定的应用场景需求。 首先,我们要理解Feign的工作原理。Feign通过接口定义了服务调用的契约,Ribbon则是负责客户端负载均衡的组件,而Eureka Server则是服务注册与...

    java-jdk1.8-jdk-8u202-linux-x64.zip

    - 默认方法:在接口中引入了默认方法,允许不覆写接口方法而提供默认实现。 - 类数据共享(Class Data Sharing, CDS):可以优化启动时间,通过预先加载类数据到共享归档文件来减少JVM启动时的内存占用。 - 对JSON...

    java精华总结

    封装是隐藏对象的实现细节,并仅暴露必要的接口供外部使用的一种机制。 ##### 8. 访问修饰符 Java中有四种访问修饰符:public、protected、private 和默认(无修饰符)。 ##### 9. 类的设计分析 在设计类时,...

    java源码:哈希计算工具 java-hash.7z

    - 对象的哈希码生成,以及如何覆写`hashCode()`方法以满足特定需求。 - 如何验证数据的完整性和一致性,例如通过比较文件的MD5或SHA值。 通过分析和实践这些源码,开发者不仅可以提升Java编程技能,还能深入理解...

    基于JavaReport的Web报表开发

    - **WebReportEngine类**:作为JavaReport的Web引擎开发接口,是JSP或Servlet开发的基础,开发者通常需要继承此类并覆写`createReport()`方法来实现报表的创建。 在实际应用中,JavaReport提供的组件和类库相当丰富...

    覆写onMeasure例子

    ```java @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int parentWidth = MeasureSpec.getSize(widthMeasureSpec); int parentHeight = MeasureSpec.getSize...

Global site tag (gtag.js) - Google Analytics