Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有解释java变量继承和构造函数代码流的信息图?_Java_Class_Inheritance_Constructor_Polymorphism - Fatal编程技术网

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

是否有解释java变量继承和构造函数代码流的信息图?,java,class,inheritance,constructor,polymorphism,Java,Class,Inheritance,Constructor,Polymorphism,是否有解释java变量继承和构造函数代码流的信息图 我在可视化继承和类变量如何工作、公共、静态私有默认或其他方面遇到了困难。我建议您使用上述关键字编写代码,然后进行测试 默认值:对包可见 私有:仅对类可见 公众:世界可见 受保护:对包和所有子类可见 来自Oracle的有一个关于继承的部分,应该能够回答您的大多数问题。访问修饰符(public、protected、package)在继承中只起一小部分作用。不能使子类中的函数或变量比超类更难访问(例如,Animal具有public void doSt

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


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

我建议您使用上述关键字编写代码,然后进行测试

  • 默认值:对包可见
  • 私有:仅对类可见
  • 公众:世界可见
  • 受保护:对包和所有子类可见
  • 来自Oracle的有一个关于继承的部分,应该能够回答您的大多数问题。

    访问修饰符(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()调用。

    所以我不懂图形

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

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

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

    事实上,我不知道所有的参数,所以我不向你们描述。但99.9%的时间是私人使用的

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

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


    如果您需要更多信息,请在前面的回复中解释在哪里可以找到官方来源。

    这是一个非常简单的示例:

    每次创建圆形或方形对象时,也会创建形状对象

    关于变量:
    -
    private
    字段不能被任何其他类(包括子类)访问。
    -
    受保护的
    字段可由任何子类访问。从链接、抽象类形状的变量x和y拍摄的图片,圆形或方形的每个实例都有这些字段。
    -
    默认值
    字段可由同一包中的任何子类和任何类访问(仅在同一包中,子包中的类不具有访问权限)。这通常很有用,在编写自动测试时,您不必为字段声明公共getter。
    -
    public
    字段可由任何其他类访问。但是,使用这些字段编写代码不是一种干净的方法,最好使用getter和setter创建私有字段。

    -
    static
    关键字指定类拥有的字段,而不是它的实例。这就像有一个字段被类的多个实例共享。如果一个实例更改了这个字段的值,其他每个实例只能读取这个新修改的

    FWIW-我不认为你会在上面找到一个信息图,你在很大程度上是独立的Java打包和访问修饰符与继承是不同的,静态关键字的类/实例区别也是不同的。每个类可能都有有用的信息图形,但特别是对于构造函数代码流,有一些细微之处(例如实例初始化器代码块和链式构造函数)通过查看工作代码示例可能最能理解哪些内容。这一切都取决于您希望获得的理解程度。他问的是关于信息图形的人!目前为止的答案只是以文本形式解释。(一些链接到的内容中有图片,但它们不是单一的信息图形中心,如果您知道我的意思的话。)不幸的是,我不知道有任何这样的资源在我的头上。
    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. 
    }