是否有解释 java 变量继承和构造函数代码流的信息图?
我在可视化继承和类变量如何工作、公共、静态私有默认或其他方面遇到了麻烦。
是否有解释 java 变量继承和构造函数代码流的信息图?
我在可视化继承和类变量如何工作、公共、静态私有默认或其他方面遇到了麻烦。
访问修饰符(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() 调用。
所以我不知道图形。
静态意味着变量对于具有相同类的所有对象都是相同的。
喜欢
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% 的时间是私有的。
受保护的意思是,变量对包和子类开放(第一次私有更容易使用和更安全)
另一个参数可以是最终的,有了这个参数,变量就不能再改变了。这就像一个常数。静态最终参数是类常量。
如果您需要更多信息,之前的回复说明在哪里可以找到官方消息来源。
这是一个非常简单的例子: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
关键字指定类拥有的字段,而不是它的实例。这就像让类的多个实例共享一个字段。如果一个实例更改此字段的值,则每个其他实例都只能读取这个新修改的
我建议您使用Lava 语言规范并尝试使用上述关键字编写代码,然后对其进行测试。
Oracle的Java 教程有一个关于继承的部分,应该能够回答您的大部分问题。