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

时间:2012-08-16 06:45:14

标签: java class inheritance constructor polymorphism

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

我在查看继承和类变量如何工作,公共,静态私有默认或其他方面时遇到了麻烦。

5 个答案:

答案 0 :(得分:0)

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

  1. 默认值:包可见。
  2. 私人:仅对班级可见
  3. 公开:向世界展示
  4. 受保护:对包和所有子类可见。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

访问修饰符(public,protected,package)在继承中只起很小的作用。你不能在子类中创建一个比超类更难访问的函数或变量(例如,Animal有公共void doStuff()和Cat扩展Animal有私有的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()调用。

答案 3 :(得分: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%的时间是私人使用。

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

其他参数可以是final,使用此参数变量不能再更改。这就像一个常数。静态最终参数是类常量。

如果您需要更多信息,之前的回复解释了官员的来源。

答案 4 :(得分: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关键字指定由类拥有的字段,而不是由其实例拥有。这就像让一个字段由该类的多个实例共享一样。如果一个实例更改了此字段的值,则每个其他实例只能读取此新修改的