此 Java 代码的目的 - 对象创建
The purpose of this Java code - Object Creation
我想看懂下面的代码。是否有用于创建具有两个 classes 的对象的名称?我假设我会创建一个可以从 Animal class 调用 methods/variables 的 Deer 对象,但它似乎不起作用。为什么有人要在 Java 中创建这样的对象?
public class Animal {
int J = 20;
}
public class Deer extends Animal {
int Q = 40;
}
public void test() {
Animal D = new Deer();
}
这称为继承,当您在 Java 中做任何与 OOP 相关的事情时,它非常有用。
您目前甚至 class 中都没有任何方法,因此您现在无法测试方法的工作原理。但是,如果您在动物 class 中添加了一个方法(例如 public void talk() {}
),则可以使用 super.talk()
.
在 Deer class 中调用该方法
作为旁注,如果您将 class 声明为 public
,它需要在其自己的单独文件中,否则您将遇到编译器错误。如果你想让所有的东西都在一个文件里,就把public
.
这个词去掉
您可以访问 https://www.w3schools.com/java/java_inheritance.asp 以获取有关继承和 classes 的更多信息。
当您需要重复使用代码并从 classes 获取信息时,这会很有帮助,例如,class ANIMAL and subclasses Dog, Cat, Monkey, 等等。
归根结底,它们都是动物,吃,运行,睡觉,但更深层次的是,它们每个人都有独特的行为,猫可以吃,也可以喵,狗可以运行 但它也会吠叫。
所以他们有独特和相似的动作要执行。
继承是重用父级现有代码的好方法 class。
您可以查看继承文档。
Inheritance
首先我发现问题描述太短了。所以尝试纠正它。
这种类型的 class 创建是称为继承的东西的一部分,它在
时提供帮助
- 我们不想提供子函数的访问权限class。(因此我们的基 class 充当包装器。)
- 重写baseclass的功能。这样当调用 baseclass 函数时,它的行为就像调用了 subclass 函数一样。
举个例子
public class MyClass {
public static void main(String args[]) {
Animal D = new Deer();
System.out.println(D.getType());
}
public static class Animal{
String Type="Animal";
public String getType(){
return Type;
}
}
public static class Deer extends Animal{
String SubType="Mammal";
public String getType(){
return SubType;
}
public String eatgrass(){
return "eatgrass";
}
}
public static class Bird extends Animal{
String SubType="bird";
public String getType(){
return SubType;
}
public String fly(){
return "flying";
}
}
}
在上面的例子中。
我们可以看到并不是所有的动物都吃草,所以我们想隐藏这个细节,只使用所有动物对象共有的函数,在本例中是 getType()
我们想要 D.getType() 到 return 最接近动物图表中的 class 鹿名称的类型,即“哺乳动物”。因此,当我们调用 D.getType() 而不是像您在代码中期望的那样得到“动物”时,我们将得到“哺乳动物”
我想看懂下面的代码。是否有用于创建具有两个 classes 的对象的名称?我假设我会创建一个可以从 Animal class 调用 methods/variables 的 Deer 对象,但它似乎不起作用。为什么有人要在 Java 中创建这样的对象?
public class Animal {
int J = 20;
}
public class Deer extends Animal {
int Q = 40;
}
public void test() {
Animal D = new Deer();
}
这称为继承,当您在 Java 中做任何与 OOP 相关的事情时,它非常有用。
您目前甚至 class 中都没有任何方法,因此您现在无法测试方法的工作原理。但是,如果您在动物 class 中添加了一个方法(例如 public void talk() {}
),则可以使用 super.talk()
.
作为旁注,如果您将 class 声明为 public
,它需要在其自己的单独文件中,否则您将遇到编译器错误。如果你想让所有的东西都在一个文件里,就把public
.
您可以访问 https://www.w3schools.com/java/java_inheritance.asp 以获取有关继承和 classes 的更多信息。
当您需要重复使用代码并从 classes 获取信息时,这会很有帮助,例如,class ANIMAL and subclasses Dog, Cat, Monkey, 等等。 归根结底,它们都是动物,吃,运行,睡觉,但更深层次的是,它们每个人都有独特的行为,猫可以吃,也可以喵,狗可以运行 但它也会吠叫。 所以他们有独特和相似的动作要执行。 继承是重用父级现有代码的好方法 class。 您可以查看继承文档。 Inheritance
首先我发现问题描述太短了。所以尝试纠正它。 这种类型的 class 创建是称为继承的东西的一部分,它在
时提供帮助- 我们不想提供子函数的访问权限class。(因此我们的基 class 充当包装器。)
- 重写baseclass的功能。这样当调用 baseclass 函数时,它的行为就像调用了 subclass 函数一样。
举个例子
public class MyClass {
public static void main(String args[]) {
Animal D = new Deer();
System.out.println(D.getType());
}
public static class Animal{
String Type="Animal";
public String getType(){
return Type;
}
}
public static class Deer extends Animal{
String SubType="Mammal";
public String getType(){
return SubType;
}
public String eatgrass(){
return "eatgrass";
}
}
public static class Bird extends Animal{
String SubType="bird";
public String getType(){
return SubType;
}
public String fly(){
return "flying";
}
}
}
在上面的例子中。
我们可以看到并不是所有的动物都吃草,所以我们想隐藏这个细节,只使用所有动物对象共有的函数,在本例中是 getType()
我们想要 D.getType() 到 return 最接近动物图表中的 class 鹿名称的类型,即“哺乳动物”。因此,当我们调用 D.getType() 而不是像您在代码中期望的那样得到“动物”时,我们将得到“哺乳动物”