精华内容
下载资源
问答
  • Java私有成员可以被子类继承

    千次阅读 2018-12-04 16:36:30
    之前在看书的是有一直有个错误认识,即私有成员能被子类继承。 私有成员,可以被子类继承,只是在子类中不直接访问,要在子类中访问父类的私有成员,需要通过父类的可见方法(非private修饰的方法)。 构造器...

    之前在看书的是有一直有个错误认识,即私有成员不能被子类继承。

    私有成员,可以被子类继承,只是在子类中不能直接访问,要在子类中访问父类的私有成员,需要通过父类的可见方法(非private修饰的方法)。

    构造器是不能被继承的。

     

    展开全文
  • 照片中划线部分说了父类的私有成员能被子类继承,但我在CSDN上看到有位大佬说父类的所有成员不管什么权限都能被子类继承??? 本人菜鸟,希望有大神帮我解惑(献上膝盖)#![图片]...
  • 私有的成员能被子类继承吗?

    千次阅读 2014-08-19 08:42:21
    转:... 如果你的答案是斩钉截铁的"不",那么请你继续向下看,说不定这篇文章对你有所用处. 首先请看两个的代码: BaseClass: package com.sitinspring; import java.util.Vector; /**

    转:http://www.blogjava.net/sitinspring/archive/2007/12/04/165288.html

    如果你的答案是斩钉截铁的"不能",那么请你继续向下看,说不定这篇文章能对你有所用处.

    首先请看两个类的代码:
    BaseClass:

    package com.sitinspring;
    
    import java.util.Vector;
    
    /**
     * 基类BaseClass,ChildClass类的父类
     * @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-12-4
     */
    public class BaseClass{
        // 私有动态数组成员,注意它是"private"的
        private Vector objects;
        
        /**
         * 在构造函数
         *
         */
        public BaseClass(){
            objects=new Vector();
        }
        
        /**
         * 公有函数,向动态数组成员objects添加字符串
         * @param str
         */
        @SuppressWarnings("unchecked")
        public void addStr2Obs(String str){
            objects.add(str);
        }
        
        /**
         * 公有函数,打印objects中的诸元素
         *
         */
        public void printAll(){
            for(int i=0;i<objects.size();i++){
                System.out.println("序号="+i+"\t元素="+objects.get(i));
            }
        }
    }

    ChildClass,BaseClass的派生类:

    package com.sitinspring;
    
    /**
     * ChildClass,BaseClass的派生类
     * @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-12-4
     */
    public class ChildClass extends BaseClass{
        public void printObjects(){
            // 下面的句子是不能编译通过的
            /*for(int i=0;i<objects.size();i++){
                System.out.println("序号="+i+"\t元素="+objects.get(i));
            }*/
        }
        
        public static void main(String[] args){
            ChildClass childClass=new ChildClass();
            
            childClass.addStr2Obs("Hello");
            childClass.addStr2Obs("World");
            childClass.addStr2Obs("China");
            childClass.addStr2Obs("sitinspring");
            
            childClass.printAll();
        }
    }


    再让我们把断点停在main函数中的childClass.printAll()上,看看实例childClass中到底有什么.


    以上截图证明:objects确实是ChildClass类实例childClass的成员,而且四个字符串也都被加进去了.

    最后执行出来,结果如下:

    序号=0 元素=Hello
    序号
    =1 元素=
    World
    序号
    =2 元素=
    China
    序号
    =3 元素=sitinspring

     

    这也说明,上面红字部分的论断是正确的.

    再翻看书籍,关于private限制的成员变量是这样写的:
    private 只允许来自改类内部的方法访问.不允许任何来自该类外部的访问.

    我们上面添字符串和遍历输出函数都是BaseClass的成员,所以它当然被这两个函数访问.而ChildClass的printObjects是BaseClass类外部的函数,结果当然是编译也不能通过.

    实际上,private,public,protected和继承没有关系,他们对成员函数和变量的限制只是在成员的可见性上,
    public允许来自任何类的访问;
    private只允许来自改类内部的方法访问,不允许任何来自该类外部的访问;
    protected允许来自同一包中的任何类以及改类的任何地方的任何子类的方法访问.


    而关于成员变量的继承,父类的任何成员变量都是会被子类继承下去的,私有的objects就是明证,这些继承下来的私有成员虽对子类来说不可见,但子类仍然可以用父类的函数操作他们.

    这样的设计有何意义呢?我们可以用这个方法将我们的成员保护得更好,让子类的设计者也只能通过父类指定的方法修改父类的私有成员,这样将能把类保护得更好,这对一个完整的继承体系是尤为可贵的. jdk源码就有这样的例子,java.util.Observable就是这样设计的.

    本文例子下载:
    http://www.blogjava.net/Files/sitinspring/PrivatePuzzle20071204210542.rar

    展开全文
  • 理解父类构造方法不能被子类继承

    千次阅读 2018-07-07 14:14:27
    Constructor&lt;? e&gt; constructor = aclass...aclass extends bclass注意:通过实验证明,父类的构造方法 不能被子类继承,例如bclass 有构造方法b(context,viewgroup)aclass没有构造方法a(context,viewg...

    Constructor<? e> constructor = aclass.getConstructor(Context.class, ViewGroup.class);
    

    aclass extends bclass

    注意:通过实验证明,父类的构造方法 不能被子类继承,

    例如

    bclass 有构造方法

    b(context,viewgroup)

    aclass没有构造方法

    a(context,viewgroup)

    第一行获取alass的构造函数的时候, 并不能获取到,必须要求a类也有构造方法a(context,viewgroup)才能获取到




    展开全文
  • 首先请看两个的代码: BaseClass: package com.sitinspring; import java.util.Vector; /**  * 基类BaseClass,ChildClass的父类  * @author: sitinspring(junglesong@gmail.com)  * @date: ...
    首先请看两个类的代码:
    
    BaseClass:
    package  com.sitinspring;

    import  java.util.Vector;

    /**
     * 基类BaseClass,ChildClass类的父类
     * 
    @author : sitinspring(junglesong@gmail.com)
     * @date: 2007-12-4
     
    */
    public   class  BaseClass{
        
    //  私有动态数组成员,注意它是"private"的
         private  Vector objects;
        
        
    /**
         * 在构造函数
         *
         
    */
        
    public  BaseClass(){
            objects
    = new  Vector();
        }
        
        
    /**
         * 公有函数,向动态数组成员objects添加字符串
         * 
    @param  str
         
    */
        @SuppressWarnings(
    " unchecked " )
        
    public   void  addStr2Obs(String str){
            objects.add(str);
        }
        
        
    /**
         * 公有函数,打印objects中的诸元素
         *
         
    */
        
    public   void  printAll(){
            
    for ( int  i = 0 ;i < objects.size();i ++ ){
                System.out.println(
    " 序号= " + i + " \t元素= " + objects.get(i));
            }
        }
    }

    ChildClass,BaseClass的派生类:
    package  com.sitinspring;

    /**
     * ChildClass,BaseClass的派生类
     * 
    @author : sitinspring(junglesong@gmail.com)
     * @date: 2007-12-4
     
    */
    public   class  ChildClass  extends  BaseClass{
        
    public   void  printObjects(){
            
    //  下面的句子是不能编译通过的
             /* for(int i=0;i<objects.size();i++){
                System.out.println("序号="+i+"\t元素="+objects.get(i));
            }
    */
        }
        
        
    public   static   void  main(String[] args){
            ChildClass childClass
    = new  ChildClass();
            
            childClass.addStr2Obs(
    " Hello " );
            childClass.addStr2Obs(
    " World " );
            childClass.addStr2Obs(
    " China " );
            childClass.addStr2Obs(
    " sitinspring " );
            
            childClass.printAll();
        }
    }

    再让我们把断点停在main函数中的childClass.printAll()上,看看实例childClass中到底有什么.


    以上截图证明: objects确实是ChildClass类实例childClass的成员,而且四个字符串也都被加进去了.

    最后执行出来,结果如下:
    序号 = 0     元素 = Hello
    序号
    = 1     元素 = World
    序号
    = 2     元素 = China
    序号
    = 3     元素 = sitinspring

    这也说明,上面红字部分的论断是正确的.

    再翻看书籍,关于private限制的成员变量是这样写的:
    private  只允许来自改类内部的方法访问.不允许任何来自该类外部的访问.

    我们上面添字符串和遍历输出函数都是BaseClass的成员,所以它当然被这两个函数访问.而ChildClass的printObjects是BaseClass类外部的函数,结果当然是编译也不能通过.

    实际上,private,public,protected和继承没有关系,他们对成员函数和变量的限制只是在成员的可见性上,
    public允许来自任何类的访问;
    private只允许来自改类内部的方法访问,不允许任何来自该类外部的访问;
    protected允许来自同一包中的任何类以及改类的任何地方的任何子类的方法访问.


    而关于成员变量的继承, 父类的任何成员变量都是会被子类继承下去的 ,私有的objects就是明证,这些继承下来的私有成员虽对子类来说不可见,但子类仍然可以用父类的函数操作他们.

    这样的设计有何意义呢?我们可以用这个方法将我们的成员保护得更好,让子类的设计者也只能通过父类指定的方法修改父类的私有成员,这样将能把类保护得更好,这对一个完整的继承体系是尤为可贵的. jdk源码就有这样的例子,java.util.Observable就是这样设计的.
    展开全文
  • 可以通过 反射验证 父类和子类: public abstract class Parent { private void PrivSaySomeWord() { Console.WriteLine("我是一个私有方法!"); } private string PrivProp { g...
  • c++之哪些成员函数不继承

    千次阅读 2020-06-14 21:25:50
    C++中,并不是所有的成员函数都能被子类继承,有三类成员函数不能被子类继承,分别是:构造函数(包括拷贝构造)、析构函数、赋值运算符重载函数。 一,构造函数  构造方法用来初始化的对象,与父类的其它成员...
  • 哪些成员函数不继承

    千次阅读 2019-03-27 21:15:35
    C++中,并不是所有的成员函数都能被子类继承,有三类成员函数不能被子类继承,分别是:构造函数(包括拷贝构造)、析构函数、赋值运算符重载函数。 1. 构造函数  构造方法用来初始化的对象,与父类的其它成员...
  • java 私有的成员能被子类继承吗?

    千次阅读 2014-08-04 21:57:06
    private,public,protected和继承没有关系,他们对成员函数和变量的限制只是在成员的可见性上, public允许来自任何的访问; private只允许来自改内部的方法访问,不允许任何来自该外部的访问; protected允许
  • Java中父类的私有变量和方法不被子类继承如何理解父类的私有变量和方法不被子类继承呢?首先看代码如下:public class Test { public static void main(String[] args) { Son s1 = new Son();//创建一个子类...
  • 有些人审题不清楚就回答了,看清楚题目,我说的是父类中的成员属性的值会被子类继承!是父类的属性的值会被子类继承,我不是问父类的属性会被子类继承!大家看清楚好吗?大家是怎么理解的! class Father { ...
  • 转载自:父类私有变量是否被子类继承详细解说(答案:内存中存在,但sun公司定义为不继承) 因为网上就父类私有属性是否被子类继承一直争论不休,以下为了解释清楚,本人做了大量详细说明,请不要嫌我啰嗦,都是...
  • C++继承(1) - 基类哪些数据会被子类继承下来
  • 1.继承的范围,子类可以继承父类的哪些成员? 父类的public、protected修饰的属性和方法可以被子类继承 默认修饰的属性和方法在同包的情况下可以被子类继承,不同包情况不可以 父类的private修饰的属性和方法不...
  • 先给出答案:可以被子类继承,不能被子类重写。 关于父类和子类关系还不太了解的看一去看一下链接https://blog.csdn.net/qq_34826261/article/details/97635047,里面详细解释了父类和子类不同情况下成员方法和成员...
  • // 在base外不访问base的protected成员变量 b.setI(1);  } Child() { i = 2; //子类继承了基类的protected成员变量 } ~Child() {} }; void main() { Base* pBase = new...
  • 今天看到java中子类能不能继承父类的私有成员,于是验证了一下. class People{ private int i = 10; public int getI(){ return i; } } class Student extends People{ public static void main(String[] a...
  • 1、父类中的静态方法可以被继承、但不能被子类重写。 2、如果在子类中写一个和父类中一样的静态方法,那么该静态方法由该子类特有,两者不构成重写关系。 final修饰: 1、修饰表示不允许被继承。 2、修饰方法表示...
  • 肯定是被继承的 但是 子类无法访问父类的私有属性或方法。。。。
  • 在项目中被这个细节坑到,简化后的代码地址: git@github....导致的原因:B初始化后,单例的监听设置改变,导致A的监听设置被改变。这样A在触发监听回调后,回调到的就是B中的私有变量,而不是原有变量。
  • 在python的继承中,基类的私有函数不被重载例子下图是私有函数的重载:
  • 1. 父类的static变量和函数在派生中依然可用,但是受访问性控制(比如,父类的private域中的就不可访问),而且对static变量来说,派生和父类中的static变量是共用空间的,这点在利用static变量进行引用计数的...
  • 引入: 子类继承父类,子类就得到了父类的属性和行为。 但是并非所有父类的属性和行为等子类都可以继承。 子类不能继承父类的东西: 子类不能继承父类的构造器:子类有自己...答:子类是不能继承父类的静态成员的。 子类.
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的...
  • 如果你的答案是斩钉截铁的"不",那么请你继续向下看,说不定这篇文章对你有所用处.首先请看两个的代码:BaseClass:Code highlighting produced by Actipro CodeHighlighter (freeware)...
  • JAVA中的父类私有成员变量的继承问题

    千次阅读 多人点赞 2019-04-25 17:36:35
    如果父类中属性为私有(private),那么能否被子类继承呢? 答案是不可以。 我们看如下简单代码 class Father { private String name; public void sayHi() { System.out.println("My name is " + this....
  • 原因当然是子类是父类的超集,所以父类中的东西(成员变量和成员方法在子类中都有) /**  * @description : 测试继承 &lt;br&gt;  * @author Administrator &lt;br&gt;  */ class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,609
精华内容 16,243
关键字:

哪些成员能被子类继承