假设您有一个称为超类的类。
我可以说
lift
我可以做到
StateT s Parser
这两种方法都允许我在该类中使用方法/变量。有人可以使图片更清晰吗?
答案 0 :(得分:2)
因此,关于什么是类以及什么是实例存在误解。 Java中的每个对象都由一个类定义。该类是一组字段和方法,它们定义了类实例的行为。
假设您有一堂课Foo
class Foo {
int foo() {
return 0;
}
}
要调用foo
,我需要创建该类的实例。
Foo f = new Foo();
System.out.println(f.foo());
实例化一个类很有用的一个原因是,因为您可以创建多个对象,它们的行为略有不同。以Foo
class Foo {
int i;
Foo(int i) {
this. i = i;
}
int foo() {
return i;
}
}
在此示例中,我向Foo
添加了一个名为i
的字段,并添加了一个构造器来设置i
。现在,我可以使用Foo
的不同值来实例化i
。
Foo f1 = new Foo(1);
Foo f2 = new Foo(2);
System.out.println(f1.foo());
System.out.println(f2.foo());
// prints 1 2
扩展类时,可以更新,添加或覆盖Foo
中的方法
class Bar extends Foo {
Bar(int i) {
super(i); // call Foo's constructor too
}
int bar() {
return i * 2;
}
}
注意如何仍然可以使用方法foo
,但也可以使用额外的方法bar
:
Bar b = new Bar(3);
System.out.println(b.foo());
System.out.println(b.bar());
// prints 3 6