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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

子类继承后有什么不同?不都是不能修改父类的内容么?

6 个回复

倒序浏览
主要是final的方法问题?final的方法不能被复写,用private修饰的方法,子类不也是不知道么?不就不存在复写。
要是不想子类继承父类的方法,什么情况下用final,什么时候用private?
回复 使用道具 举报
咪咪 来自手机 黑马帝 2011-11-12 14:45:38
藤椅
final是一个最终修饰符用他修饰的变量和方法是不能被修改和覆盖的,但可以继承一般父类里的成员用他修饰就说明该成员是共有的,无论哪个子类继承都不能变,比如声明一个电脑类,该类的一个成员是cpu那么如果说生产cpu的厂家只有inter以后无论出现任何一个电脑的子类都是inter无法改变那么cpu这个成员就可以定义为final.至于private是对成员权限的控制,如果父类中的成员用private修饰说明该成员相对比较隐秘,不想让外不直接获得这样提高了安全性,但是子类也是可以继承的。
回复 使用道具 举报
坚强 黑马帝 2011-11-12 15:43:49
板凳
  用final和private修饰的成员,子类都不能去修改,不同的是,用仅用final修饰的成员子类中有访问权,用private修饰的成员子类没有访问权,我看书上的说法是,用private修饰的成员在子类中是存在的,但被隐藏了,我觉得其实就是没有。用final修饰的子类中依然有
回复 使用道具 举报
哦了,有无访问权限
回复 使用道具 举报
其实说白了就是一个final修饰的也就是一个常量,可以被子类所读到,但是不能修改,它在内存中是一个不能值不能改变的数据,而用private修饰则是自己所属,可以在父类中写方法来访问或者改写,但是不能被子类直接读写!
回复 使用道具 举报
张翼 黑马帝 2011-11-12 19:40:12
7#
其实,不太容易搞混,private修饰,表示该该成员仅仅可以被父类中对象和方法使用,子类不可以使用;
例子:
class acc1
{
          private int i=1;
          public void abc()
          {
                  System.out.println("a");
          }
}
public class acc extends acc1
{
        public static void main(String argv[])
        {
                acc a=new acc();
                a.i;//这里编译发生错误
                a.abc();//这里没有发生错误
        }
}
//其实i和abc都是父类的成员,区别仅仅是i是私有的,所以子类不可以继承它。

final修饰属性表示该属性是常量,重新赋值将导致错误,如果修饰方法表示该方法在子类中无法再被覆盖,但是继承它并且使用却是没有问题的。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马