A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马张旭明 中级黑马   /  2012-8-6 12:00  /  2129 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

子类继承了父类,在子类创建对象的时候父类的方法和静态变量被加载到了方法区,所以子类可以调用,但是父类中的非静态变量也可以被子类调用。视频里没有说非静态变量,我想问调用子类的时候父类是不是也有对象产生,不然的话怎么使用到非静态变量的。

8 个回复

倒序浏览
我自己的理解   :  
在子类对象建立的时候,父类的成员和方法就已经包含在子类对象当中了,其中有两种特殊情况,
1.是父类中的静态成员 和静态方法会进入方法区 ,因为静态随着类的加载而加载,他出现的时间早于 对象的建立时间,
因此他们的实体在方法区中 ,只是指向子类对象。
2.父类中private的私有成员和私有方法,内存中 他们也被包含在子类对象里,占据了空间,只是对象无法访问。

至于楼主说的非静态变量其实包含在子类对象中直接被子类调用,而不需要建立父类对象。
回复 使用道具 举报
有,子类的构造函数中的第一句默认就是父类的无参构造函数。。。如果父类的构造函数不是默认的,记得在子类的构造函数的第一句来个super(参数);
回复 使用道具 举报
class Fu
{
        int num = 4;
        public void show()
        {
                System.out.println("fu run");
        }
}
class Zi extends Fu
{
        
}

class ExtentDemo
{
        public static void main(String[] args)
        {
                Zi z = new Zi();
                z.show();
                System.out.println(z.num);
        }
}

当A类继承了B类的时候,A类也就拿到了B类中的所有的方法与变量(包括静态与非静态),也就相当于A类中就有B类中的方法与变量(B类中private修饰的成员除外)。
所以创建一个子类对象,用子类对象调用父类中的非私有成员肯定可以的。

非静态成员和静态成员区别在于:
非静态成员必须要县创建对象,然后再用对象调用。
静态成员可以不用创建对象直接被类名所调用。因为静态成员是随着类的加载而加载的、优先于对象存在。


调用子类的时候父类是不是也有对象产生?
编译的时候,父类也会加载进内存,因为子类要先看父类是怎样对成员的初始化的,然后再初始化自己。但父类不会有对象产生,因为对象都是存在与堆内存中的。
回复 使用道具 举报
当然生成了对象,所以现有父亲才有儿子吗。在没有显示调用父类的构造方法时,子类构造函数中默认有super();调用父类的构造函数,并生成父类的对象。
回复 使用道具 举报
在创建一个子类对象时,并不创建父类对象,创建对象是要用new的。子类的构造器先调用父类的无参数父类构造器,除非你在构造器中显示调用了父类的某个构造器。调用构造函数的意义是子类继承父类,一种是把父类属性继承下来,然后调用父类的构造函数来初始化这些属性,直致所有这些继承下来属性都初始化完毕(即所有父类的构造函数都被调用),这样解释的话,当然不会构造父类对象! 因为这些构造函数的调用是为了初始化从父类继承下来的属性,被初始化的属性的地址始终在本对象当中,虽然会出现象构造父类对象的现象,但那只是子类实例化的一个过程,并非实际上生成父类对象。(参考)
回复 使用道具 举报
子类继承了父类,就继承了父类的属性,当父类里面是静态的,就不需要建立对象而用类就可以调用了(建立对象会分配内存的),因为静态成员是随着类的加载而加载,
回复 使用道具 举报
我想问调用子类的时候父类是不是也有对象产生,不然的话怎么使用到非静态变量的。

创建对象时加载子类前会先加载父类
按照父子关系进行初始化,首先执行父类静态初始化块,然后子类的静态初始化块
然后父类初始化代码块,父类构造方法,
然后是子类初始化块,最后是子类构造方法


当子类和父类完全加载进内存的时候
调用子类的时候 父类中不会有对象产生的 (对象的产生必须用new关键字)


子类可以用到父类中的非静态变量
实际上子类用的是自己的非静态变量这是因为子类继承父类就会获得父类中的成员变量和方法
父类的非静态变量自己可以直接拿过来用。

回复 使用道具 举报
这么一说,构造函数也不但是创建对象才用到哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马