0

是否有解释 java 变量继承和构造函数代码流的信息图?

我在可视化继承和类变量如何工作、公共、静态私有默认或其他方面遇到了麻烦。

4

5 回答 5

0

访问修饰符(public、protected、package)在继承中只起很小的作用。您不能使子类中的函数或变量比超类更难访问(例如,Animal 有 public void doStuff() 并且 Cat extends Animal 有 private void doStuff()

静态和非静态方法也不会真正影响继承。静态变量的工作方式相同,除了相对于感兴趣的类

public class Magic{
    public static int pants;
}

public class MagicPants extends Magic{
    public void go(){
        System.out.println(pants); 
        System.out.println(MagicPants.pants);
        System.out.println(Magic.pants);
    }

    public static void main(String argv[]){
        Magic.pants = 2;
        MagicPants.pants = 1;
        new MagicPants().go();
    }
}

全部打印 1

构造函数代码流很简单——遵循 super() 调用。

于 2012-08-16T07:04:22.787 回答
0

所以我不知道图形。

静态意味着变量对于具有相同类的所有对象都是相同的。

喜欢

public Class TryVariable{
    public static int variable = 2

    public static void main(String[] args){
        a = new TryVariable()
        b = new TryVariable()
        system.out.println(a.variable)
        system.out.println(b.variable)
        // both equals 2

        a.variable= 3
        system.out.println(a.variable)
        system.out.println(b.variable)
        // both equals 3, because variable is static. 
}  

公共变量意味着您可以像我在前面的示例中那样直接更改她:object.variableName = value。这是危险的,不建议所有人使用它。

私有变量不能直接更改,您需要使用一些 getter 和 setter 来完成这项工作。这是编码的好方法。

默认情况下,我不了解所有参数,所以我不向您描述。但是 99.9% 的时间是私有的。

受保护的意思是,变量对包和子类开放(第一次私有更容易使用和更安全)

另一个参数可以是最终的,有了这个参数,变量就不能再改变了。这就像一个常数。静态最终参数是类常量。

如果您需要更多信息,之前的回复说明在哪里可以找到官方消息来源。

于 2012-08-16T07:04:23.480 回答
0

这是一个非常简单的例子:http: //vskl.blogspot.cz/2009/05/polymorphism-in-java.html

每次创建 Circle 或 Square 对象时,也会创建 Shape 对象

关于变量:
-private任何其他类(包括子类)都无法访问字段。
-protected任何子类都可以访问字段。从链接中获取图片,抽象类Shape的变量x和y,Circle或Square的每个实例都有这些字段。
-default任何子类和同一包中的任何类都可以访问字段(仅在同一包中,子包中的类无权访问)。这通常在编写自动化测试时很有用,您不必为该字段声明公共 getter。
-public任何其他类都可以访问字段。然而,使用这些并不是编写代码的干净方式,最好使用 getter 和 setter 创建私有字段。
-static关键字指定类拥有的字段,而不是它的实例。这就像让类的多个实例共享一个字段。如果一个实例更改此字段的值,则每个其他实例都只能读取这个新修改的

于 2012-08-16T07:08:35.567 回答
0

我建议您使用Lava 语言规范并尝试使用上述关键字编写代码,然后对其进行测试。

  1. 默认值:对包可见。.
  2. private:只对类可见
  3. 公开:全世界可见
  4. protected: 对包和所有子类可见。
于 2012-08-16T06:52:11.517 回答
0

Oracle的Java 教程有一个关于继承的部分,应该能够回答您的大部分问题。

于 2012-08-16T06:55:02.727 回答