`

子类中变量隐藏

 
阅读更多
子类中既有变量的隐藏也有方法的覆盖
class basePoint{
int x=0;
int y=0;
void move(int dx,int dy){
x+=dx;
y+=dy;
}
int getX(){
return x;
}
int getY(){
return y;
}
}
class realPoint extends basePoint{
float x=0.0f;
float y=0.0f;
void move(int dx,int dy){
move((float)dx,(float)dy);
}
void move(float dx,float dy){
x+=dx;
y+=dy;
}
int getX(){
return (int) Math.floor(x);
}
int getY(){
return (int)Math.floor(y);
}
}
public class showDiffer{
public static void main(String[] args){
realPoint rp=new realPoint();
basePoint bp=rp;
rp.move(1.7f, 4.7f);
bp.move(1, -1);
show(bp.x,bp.y);
show(rp.x,rp.y);
show(rp.getX(),rp.getY());
show(bp.getX(),bp.getY());
}
static void show(int x,int y){
System.out.println("("+x+","+y+")");
}
static void show(float x,float y){
System.out.println("("+x+","+y+")");
}

}
1 父类和子类都有getX()和getY()方法,它们各自返回的是各类中x和y的值
2 前面连续的rp.move和bp.move调用的都是子类的方法,所以修改的是子类的变量值。
3 输出bp.x金额bp.y的时候,虽然bp指向一个子类对象,但它在声明的时候是一个父类的变量,而变量没有运行时多态的特性所以在编译时会根据p的类型决定引用父类的变量
(0,0)
(2.7,3.6999998)
(2,3)
(2,3)
成员在被子类重写时,变量被称为隐藏,而方法被称为覆盖
分享到:
评论

相关推荐

    方法和变量在继承时的覆盖和隐藏问题

    1. 子类中定义了与父类同名的变量,无论是实例变量还是静态变量,子类的变量都会隐藏父类的变量。 2. 子类中定义了一个静态方法,与父类中的实例方法名称相同,这将导致父类的实例方法被隐藏,尽管它们签名不同。 3....

    Java中的方法和变量在继承时的覆盖问题

    变量和方法覆盖和隐藏的不同:一个类的实例无法通过使用全局名或者强制自己转换为父类型,以访问父类中被隐藏的方法,然而强制转换子类为父类型之后,可以访问父类中被隐藏的变量。另外静态方法不能覆盖父类的实例...

    Java中方法的重写与成员变量的隐藏

    方法的重写是指在子类中重新定义父类中的方法,以便实现多态性,而成员变量的隐藏则是指在子类中定义与父类同名的成员变量,从而隐藏父类中的成员变量。 在 Java 中,方法的重写是通过在子类中重新定义父类中的方法...

    论JAVA继承机制中父类与子类的关系

    - **成员变量的隐藏**:子类中定义的与父类同名的成员变量会隐藏父类中的同名成员变量。这意味着在子类内部,使用变量名时会优先引用子类的成员变量。 - **方法的覆盖**:子类中定义的与父类同名且具有相同参数列表...

    java 子类对象赋值给父类对象的使用

    3. **变量隐藏**:如果子类和父类有同名的实例变量,子类变量会“隐藏”父类变量。通过父类引用访问这些变量时,实际访问的是父类的变量,而非子类的。 4. **类型转换**:虽然父类引用可以指向子类对象,但反过来...

    Java中super变量.pdf

    当子类中存在与父类同名的成员变量时,子类的变量会隐藏父类的变量。这时,我们可以使用`super`关键字来访问父类中的隐藏变量。例如: ```java class Parent { int value = 10; } class Child extends ...

    继承与接口的含义以及其子类相关的含义

    如果子类中定义了一个与父类同名的成员变量,这称为成员变量的隐藏。在子类内部,子类的成员变量会覆盖父类的同名变量。如果要访问父类的变量,需要通过`super`关键字。 **方法的重载与覆盖** 方法重载是指在同一...

    Java成员变量的隐藏(实例讲解)

    总之,Java 中的成员变量隐藏是由于继承关系导致的,子类的成员变量不会覆盖父类的同名成员变量,而是隐藏它们。这种行为可能会在代码调试和理解上造成困扰,因此在设计类结构时应避免这种情况,以提高代码的可读性...

    父子实例的内存控制.rar_父子实例的内存控制

    同样,如果子类中有一个与父类同名的变量,那么子类的这个变量将隐藏父类的变量,尽管它们在内存中有不同的存储位置。 1. **方法调用:** - **父类类型变量调用:** 当我们用父类类型的引用指向子类对象时,即使...

    java练习册(012)--类的继承(1)分享.pdf

    3. 错误预防:在编写代码时,要避免因为成员变量隐藏而引入的错误,确保只有必要的隐藏才会发生。 在实际编程中,类继承不仅用于扩展功能,还用于实现多态性,即不同对象对同一消息作出不同的响应。了解并熟练掌握...

    C#子类对基类方法的继承、重写与隐藏详解

    C#子类对基类方法的继承、重写与隐藏是OOP编程中的一些重要概念,掌握这些概念对于学习C#和使用C#编程语言非常重要。下面,我们将通过示例代码详细介绍C#子类对基类方法的继承、重写与隐藏。 一、子类继承基类非...

    实验九-子类和继承1.doc

    例如,子类中定义了一个新的`name`变量,父类的`name`变量会被隐藏,通过`super.name`可以访问父类的`name`。 4. **`super`的使用**: `super`关键字用于引用当前对象的父类。在实例方法中,`super`用于调用父类的...

    java类的继承详解说明

    如果父类的成员变量或者方法具有 private 访问权限,则这些方法和成员变量虽然被分配了内存空间,但对子类也是隐藏的。即使子类有和父类 private 方法同名,同参数列表的方法,满足“两同两小一大”的要求,也不算...

    Java中子类.pdf

    * 在子类中出现与父类同名、同类型的变量时称子类隐藏了父类变量 * 子类可以通过成员变量的隐藏和方法的覆盖把父类的状态和行为改变为自身的状态和行为 Java语言中的子类是通过继承父类来实现的,子类可以继承父类...

    Java程序设计教学做一体化教程继承与接口PPT教案学习.pptx

    在这个教学做一体化教程中,主要探讨了Java中如何定义子类、继承特性、成员变量的隐藏和方法重写,以及super关键字的使用。 首先,**子类的定义**是通过`extends`关键字实现的。例如,`class Student extends ...

    JAVA语言程序设计期末考试试卷A卷.pdf

    8. 变量和方法的隐藏:当子类中的变量或方法与父类的变量和方法重名时,子类的变量被隐藏,子类中的方法被重载。此时,指向父类中的变量或方法,则用变量实现。 9. 异常处理机制:异常处理机制简化了程序的复杂性,...

    java继承接口与泛型PPT教案学习.pptx

    在 Java 中,子类可以隐藏父类的成员变量和方法。子类可以使用同名的成员变量和方法来隐藏父类的成员变量和方法。 方法的重写是指子类定义一个方法,并且该方法的名字、返回类型、参数个数和类型与从父类继承的方法...

    java程序设计教学做一体化教程继承与接口公开课获奖课件.pptx

    成员变量隐藏是指子类中定义了与父类相同名称但类型不同的变量,导致父类的同名变量在子类中被隐藏。子类对象将只操作自己定义的变量。方法重写(Override)则允许子类改变从父类继承的方法的行为,提供自己的实现。...

    补充4:static练习讲解及隐藏和封装.rar

    在Java中,如果子类有一个与父类同名的成员(方法或字段),则父类的成员在子类内部被隐藏。这并不意味着父类的成员消失了,只是在子类的上下文中不再直接可见。如果需要访问父类的成员,可以使用`super`关键字。 ...

Global site tag (gtag.js) - Google Analytics