子类与父类的一个问题

cjh_tostring 2012-07-13 09:28:04
子类的构造方法一定要调用父类的构造方法,那么生成子类对象的时候是否是要生成一个父类对象?如果要是怎样生成的?
...全文
190 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
D_lady 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:
子类 a=new 父类();
这个a对象可以用子类中的方法,也可调用父类中得方法


楼上的这是什么玩意? 我怎么看不懂。。。 麻烦你别把错误的代码用来误导新手好不
[/Quote]

哎、 搞错,继承和实现搞混了。
实例化子类,子类的对象可以调用子类和父类中的方法
我为JAVA狂 2012-07-14
  • 打赏
  • 举报
回复
new 出来的对象 在堆内存里面,先是一个大内存存储子类对象,然后这个内存里面又有一块区域来存储父类对象。因为子类是拓展类,当然需要的内存大一点
z744489075 2012-07-14
  • 打赏
  • 举报
回复
写错了 应该是调用子类里面的特有方法的时候必须强制转换成子类 子类 b=(子类)a;
z744489075 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
引用 5 楼 的回复:

引用 4 楼 的回复:
子类 a=new 父类();
这个a对象可以用子类中的方法,也可调用父类中得方法


楼上的这是什么玩意? 我怎么看不懂。。。 麻烦你别把错误的代码用来误导新手好不


哎、 搞错,继承和实现搞混了。
实例化子类,子类的对象可以调用子类和父类中的方法
[/Quote]
子类 a=new 父类();
你这句代码有问题哦 子类怎么可能放到左边? 应该是 父类 a=new 子类(); 如果你要调用子类里面的特有方法的时候必须强制转换成子类 子类 b=(b)a;
shmilbin1570 2012-07-14
  • 打赏
  • 举报
回复
父类无构造方法时,子类调用系统默认的那个无参的构造方法,即使你不写super();子类实际也调用了。内存中当你NEW出一个子类对象时里含有一个父类的对象。比如:
class Person
{
private String name;
Person(String name){
this.name = name;
}
public String getName()
{
return name;
}
public void setName(String name){
this.name = name;
}
public void getAll(Person p){
System.out.println("name="+p.getName());

}
}
class Student extends Person
{
private int age;
Student(String name, int age){
super(name);
this.age = age;
}
public int getAge()
{
return age;
}
public void setAge(int age){
this.age = age;
}

public void getAll(Student s){
System.out.println("name="+s.getName()+"\n"+"age="+s.getAge());
}
}
public class TestStudent
{
public static void main(String[]args){
Person p = new Student("yzb",18);
p.getAll(p);
Student s = (Student)p;
s.getAll(s);

}
}
输出结果为:name:yzb
name:yzb
name:18
小程序多态存在的三个必要条件都包含了:1:父类调用指向子类对象。2:要有继承。3:要有重写
小灰狼 2012-07-14
  • 打赏
  • 举报
回复
楼主,子类对象本身就是一个父类对象
like this:
青苹果(子类)是一个苹果(父类)
苹果(子类)是一个水果(父类)
JPF1024 2012-07-13
  • 打赏
  • 举报
回复
你是想问多态把?

http://topic.csdn.net/u/20071127/11/2a64066b-2f42-4877-b799-c596710e49a6.html 看下第8楼。
leeklyh 2012-07-13
  • 打赏
  • 举报
回复
生成子类对象时,java默认先调用父类的无参构造方法,生成父类对象,然后再调用子类的构造方法,生成子类对象。所以要想生成子类对象首先要生成父类对象。
z744489075 2012-07-13
  • 打赏
  • 举报
回复
生成子类对象的时候不要生成一个父类对象 你直接new 子类对象直接就可以调用父类的方法 (子类继承了所有父类的方法 )这句话你们老师应该和你讲过吧
z744489075 2012-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
子类 a=new 父类();
这个a对象可以用子类中的方法,也可调用父类中得方法
[/Quote]

楼上的这是什么玩意? 我怎么看不懂。。。 麻烦你别把错误的代码用来误导新手好不
D_lady 2012-07-13
  • 打赏
  • 举报
回复
子类 a=new 父类();
这个a对象可以用子类中的方法,也可调用父类中得方法
cjh_tostring 2012-07-13
  • 打赏
  • 举报
回复
要生成的话,那么在内存中是怎样的一个情况呢?
张某码 2012-07-13
  • 打赏
  • 举报
回复
要生成父类对象的,通过super关键字调用调用父类的构造方法
苦瓜_Young 2012-07-13
  • 打赏
  • 举报
回复
你这样想哈 子类与父类的关系 就好像爸爸与儿子的关系 所以在NEW一个子类的对象时候 肯定要先构造一个爸爸的对象 对吧?
super就是调用父类的关键字 默认调用无参数的那个构造方法

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧