我是Java初学者,有两个可能很简单的问题想问大家,第一:我看书上说父类中private修饰的变量不能被子类继承,但是我看到有的例子中子类调用了父类的一个方法,虽然此方法是public的,但是这个方法里面有private修饰的变量。我的疑问是,既然子类没有继承这些变量,自己又没有声明,怎么能运行呢?还是子类能够和父类交流信息??不明白~
第二:没有创建类的实例也可以用类里面的信息吗?静态方法能够被继承吗??

解决方案 »

  1.   

    子类对象里是包含父类定义的属性的。所谓不"继承",就是java里的一个标准说法而已。
      

  2.   

    方法里面可以定义private类型的变量?
    这种类成员应该是在类中声明的啊,怎么会跑到方法里面去。
      

  3.   

    父类中private修饰的成员变量不能被子类继承? 
    本人认为 是 可以的,只不过你不能直接不使用它,通过public的方法使用它是可以的
    既然子类没有继承这些变量,自己又没有声明,怎么能运行呢?
    有继承的2.没有创建类的实例可以调用本类里的静态成员变量和方法。
    静态方法能被继承但不能被重写。
    第二个同意这个说法
    但是好像 也可以 调用 本类里的 非静态的静态成员变量和方法, 有待于我查证一下
      

  4.   

    http://www.5fuyou.com/images/head/DownLoad.html 分享一个编程视频下载地址,很好,很强大
      

  5.   


    package basic;public class UseMethodBeforeCreate { /**
     * @param args
     */
    public static void main(String[] args) { Sub sub = new Sub();//1
    sub.say();//5
    }}class Sub extends Super {
    Sub() {
    System.out.println("sub_constructor()");//4
    } void say() {//6
    System.out.println("sub_say()");
    }
    }class Super {
    Super() {
    say();//2 对象还没被初始化,这些被重写的方法就被可以用了,不管对象有没有new出来
    System.out.println("super_constructor()");//3 } void say() {
    System.out.println("super_say()");
    }
    }
    // 1子类构造的过程 先调用父类无参数的构造方法,2,3 然后再是4, 最后 5,6/*这个说的很对,对象还没被初始化,这些被重写的方法就被可以用了,不管对象有没有new出来 
    所以 
    Super() {
                    say();
            System.out.println("super_constructor()");
    这里已经可以调用say()方法了; 
    你new的是子类的对象, 就调用子类say()方法*/
    这就说明 
    没有创建类的实例可以调用本类里的成员方法  
    至于变量嘛
    这个好像是不行的 
    高手讨论~
     
      

  6.   

    private变量不能被别的类调用,这里的调用指的是直接调用。但你可以在这个类里写个public方法调用啊。当别的类调用这个类的对象的该方法时,是间接地对该变量进行了访问。
      

  7.   

    继承不代表可以访问
    继承只是说明在子类中有了父类中的一切
    但是不能访问用private修饰的东西
    当在子类中调用父类中public方法时 当此方法中有private变量时
    Java首先会在子类本身中寻找此变量 但是这个类又没有权限访问 所以会自动到父类中寻找此变量 多以此方法是可以运行的
      

  8.   

    自己的东西当然可以随便使用,但为人只能看到public公开的属性和方法,protected只有家族可见,静态属性和方法在没有实例化是可用
      

  9.   

    第一个问题:
    在子类继承父类的过程中,private修饰变量(属性)和方法是不被继承的,但是在创建对象时,父类中的所有属性都会被分配内存空间的(包括private属性),虽然子类不可以直接继承或者说是调用控制这些private属性,但是可以通过继承的其他方法来控制这些private属性的。
    第二个问题:
    首先,类(静态)方法和类属性是可以继承的。
    对于类中的类饿方法,在该类被加载到内存中时,就分配了相应的入口地址,即使该类没有创建对象,也可以通过类名直接调用类方法(类方法也可以通过对象调用)。
    小弟也是初学者,哪里说得不对,请各位见谅。