JAVA中出现隐藏、遮蔽、和遮掩的情况

编程入门 行业动态 更新时间:2024-10-07 02:28:19

JAVA中出现隐藏、遮蔽、和遮掩的<a href=https://www.elefans.com/category/jswz/34/1770846.html style=情况"/>

JAVA中出现隐藏、遮蔽、和遮掩的情况

避免在无关的变量或无关的概念之间重用名字,避免隐藏、遮蔽、和遮掩

一、隐藏

一个属性、静态方法或内部类可以分别隐藏在其超类中可访问到的具有相同名字(对方法而言就是相同的方法签名)的所有属性、方法或内部类。上述成员被隐藏后,将阻止其被继承
1.父类代码

public class Fu {int a = 1;public static void fly(){System.out.println("Fu want to fly");}public class Boy{public int age = 20;public void read(){System.out.println("Fu's boy read");}}
};

2.子类代码

public class Zi extends Fu {int a = 2;public static void fly(){System.out.println("Zi want to fly");}public class Boy{public int age = 23;public void read(){System.out.println("Zi's boy read");}}
}


子类继承父类,并具有与父类相同的名字,所以子类的变量a、方法Boy() 会隐藏父类的变量a、方法Boy(),引用时,使用的是子类的值或方法。但因为fly()是静态修饰的,不能被继承,所以子类不会隐藏父类的fly()方法,只能使用 类名.方法名 来调用。

二、遮蔽

一个变量、方法或类可以分别遮蔽在类内部具有相同名字的变量、方法或类。如果一个实体被遮蔽了,那么就无法用简单名引用到它

class TestInnerClass {public void test() {System.out.println("Other TestInner's method test!");}
}public class TestZ {static String name = "My name is zhangsan";void test() {System.out.println("TestZ's method test!");}void testInner() {TestInnerClass testInnerClass = new TestInnerClass();//实例化重名类testInnerClass.test();}public class TestInnerClass {//遮蔽了外部的类TestInnerClasspublic int test2 = 1;public void test() {//遮蔽了类TestZ方法testSystem.out.println("TestInnerClass's method test");}public void testMethod() {String name = "My name's lisi";//遮蔽了类TestZ 的静态属性nameSystem.out.println(name);//打印重名变量test();//调用重名方法}}
}


如果我通过TestZ 类实例化一个TestInnerClass 类,调用testMethod() 方法,test()的输出的结果是 TestInnerClass’s method test 。所以,如果一个实体被遮蔽了,那么就无法用简单名引用到它。

三、遮掩

遮掩是唯一一种两个名字位于不同的名字空间的名字重用形式,这些名字空间包括:变量,包,方法或类型。如果一个类或一个包被遮掩了,那么你不能通过其简单名引用到它,除非是在这样一个上下文环境中,即语法只允许在其名字空间中出现一种名字

public class Demo {static String System;public static void main(String[] args) {System.out.println("HelloWorld");}
}


定义的System和Java中已经存在的一个叫系统(System)的类重名,那么它将引用到静态变量上,而不是类上,所以会报编译错误。

更多推荐

JAVA中出现隐藏、遮蔽、和遮掩的情况

本文发布于:2024-02-14 01:09:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761394.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:情况   JAVA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!