[Java]抽象类进行实例化问题

2024-11-29 13:28:20
推荐回答(5个)
回答1:

s[0]=new Work("");
s[1]=new Student("");
这两句实际上是实例化了Person的两个子类的对象,再把子类的对象赋值给他的父类,因为在JAVA中规定可以声明抽象类的变量。
Person[] s = new Person[2];这句只是把S声明为Person类型的数组并分配内存空间。
而变量S在编译的时候是按照它声明的类型来处理,在运行时则是按照它实际的类型处理。

回答2:

这是多变态问题
abstract类只专门给别人继承的
它算是继承它类的上级
举例
Object z=new String("asd");
就是这个意思
这样做有利于维护和扩展

回答3:

你需要写一个类继承并实现抽象类的方法,例如my:Person的
Person() p = new My(); 说是实例化一个抽象类,其实要让他找到实际实现类才行!!这样,抽象类里面的公共属性值可以用,降低耦合!

回答4:

java中抽象类的实例化其实是实例化 实现了该抽象类的子类,抽象类只是作为引用,
注意:抽象类不能实例化。
比如:
//抽象类 动物
public abstract class Animal {

public abstract void eat(String food);
}

//子类
//鱼
public class Fish extends Animal {

public String name;

public Fish(){}

public Fish(String name) {
super();
this.name = name;
}
@Override
public void eat(String food) {
System.out.println(this.name + "eat:" + food);
}
}
//测试

public static void main(String[] args) {
Animal fish = new Fish("小鱼");
fish.eat("沙");
}

回答5:

内部的事情是这样的:
1.创建一个名为:objC的引用型变量在栈区。
2.class()这个是类的构造方法,在这里是调用了方法。
3.通过第二步,在堆中创建好对象。
4.把对象的堆地址赋值给objC;