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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 于清云 中级黑马   /  2012-4-27 11:39  /  4255 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 于清云 于 2012-4-28 18:13 编辑

视频里说 被final修饰的方法不可以被覆盖,被final修饰的类不可以被继承,但是方法又不是类,所以父类中的方法能不能跟被final修饰的父类一样也不可以被继承呢?

20 个回复

倒序浏览
方法怎么有继承这说话呢?呵呵。你拿什么东西来继承方法
回复 使用道具 举报
函数的两个特性,重载和覆盖,别的好像没有,没有听过什么继承
回复 使用道具 举报
邓斌 发表于 2012-4-27 11:43
方法怎么有继承这说话呢?呵呵。你拿什么东西来继承方法

继承 不就是子类继承父类里的所有属性 方法 吗?
回复 使用道具 举报
于清云 发表于 2012-4-27 11:48
继承 不就是子类继承父类里的所有属性 方法 吗?

恩,是子类继承父类,不是子类方法继承父类方法,这个要弄明白,子类方法要么复写父类方法,没有子类方法继承父类方法这说法,只有子类继承父类,拥有父类的方法。
回复 使用道具 举报
final标记所有通用功能,不能随意更改。
final的基本规则:
1.final类不能被继承。
2.final成员变量只允许赋值一次,且只能通过构造方法里赋值。
3.final局部变量即为常量,只能赋值一次。
4.final方法不允许被子类覆盖。
5.final一般用于标记那些通用性的功能,不能随意修改。
回复 使用道具 举报
邓斌 发表于 2012-4-27 11:51
恩,是子类继承父类,不是子类方法继承父类方法,这个要弄明白,子类方法要么复写父类方法,没有子类方法 ...

OK了 我问的有歧义 改正了
回复 使用道具 举报
liqian 发表于 2012-4-27 11:51
final标记所有通用功能,不能随意更改。
final的基本规则:
1.final类不能被继承。

我的疑问是第4点 final方法能不能被子类继承?
回复 使用道具 举报
final 关键字:final 可以修饰属性、方法、类。
final 修饰类:当一个类被final 所修饰时,表示该类是一个终态类,即不能被继承。
final  修饰方法:当一个方法被final  所修饰时,表示该方法是一个终态方法,即不能被重写(Override)。
final 修饰属性:当一个属性被final 所修饰时,表示该属性不能被改写。
当final  修饰一个原生数据类型时,表示该原生数据类型的值不能发生变 (比如说不能从10 变为20);如果final  修饰一个引用类型时,表示该引用类型不能再指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。
对于final 类型成员变量,一般来说有两种赋初值方式:
a) 在声明final 类型的成员变量时就赋上初值
b) 在声明final 类型的成员变量时不赋初值,但在类的所有构造方法中都为其赋上初值。
回复 使用道具 举报
我已经知道了 谢谢各位大虾了啊 这是我自己做的例子:
class Fu
{
        final void show()
        {
                System.out.println("fu");
        }
}

class Zi extends Fu
{
        void show1()
        {
                System.out.println("zi");
        }
}

class  Demo
{
        public static void main(String[] args)
        {
                Zi zi = new Zi();
                zi.show();
        }
}

运行结果是:

E:\>javac Demo.java

E:\>java Demo
fu

这说明了:父类中的方法被final修饰后,还是可以被子类继承的。
回复 使用道具 举报
于清云 发表于 2012-4-27 13:42
我已经知道了 谢谢各位大虾了啊 这是我自己做的例子:
class Fu
{

你这个例子只是在子类中重新定义一个方法而已,并没覆盖父类的方法!
回复 使用道具 举报
本帖最后由 于清云 于 2012-4-27 14:06 编辑
liqian 发表于 2012-4-27 13:57
你这个例子只是在子类中重新定义一个方法而已,并没覆盖父类的方法!

首先 我想研究的问题不是覆盖的问题 覆盖视频里讲了 我也测试了 加final不可以覆盖 我这研究的是父类中final修饰的方法能不能像正常父类方法被子类继承一样啊 答案是可以
回复 使用道具 举报
final修饰的类不可以别继承,为最终类,不可修改
final修饰的方法为最终方法,不可以被重写。
当非fianl类中的方法被final修饰时,继承该非final累的子类不可以重写父类中的final方法
回复 使用道具 举报
胡奎 发表于 2012-4-27 17:01
final修饰的类不可以别继承,为最终类,不可修改
final修饰的方法为最终方法,不可以被重写。
当非fianl类 ...

哥们 其实我发这个帖子只是想研究 final对父类中方法继承的影响而已 结果是没有影响
回复 使用道具 举报
孙天 黑马帝 2012-4-27 21:06:29
15#
1,final是一个修饰符,可以修饰类,方法,变量(成员,局部)
2,final修饰的类不可以被继承
3,final修饰的方法不可以被覆盖
final是严谨性的表现
4,final修饰的变量是常量,只能被修饰一次
回复 使用道具 举报
孙天 发表于 2012-4-27 21:06
1,final是一个修饰符,可以修饰类,方法,变量(成员,局部)
2,final修饰的类不可以被继承
3,final修饰 ...

大虾们啊 我知道final的用法 注意我要研究的问题啊
回复 使用道具 举报
被final修饰的类是不能被继承的。如果类没被final修饰而方法被final修饰的话,方法是可以被继承的,但是不可以被覆写。而没被final修饰的方法既可以被继承,又可以被覆写。
回复 使用道具 举报
"所以父类中的方法能不能跟父类一样也不可以被继承呢?"你这句话是想说什么?
继承父类,即是继承父类中的可以被继承的变量,方法,父类不能被继承,还谈什么父类的方法继承?,想不被继承就加final么
回复 使用道具 举报
于清云 发表于 2012-4-27 20:59
哥们 其实我发这个帖子只是想研究 final对父类中方法继承的影响而已 结果是没有影响 ...

final对父类中方法的继承没影响?子函数继承父类是为了覆写,你可知被final修饰的方法不能被覆写?
回复 使用道具 举报
付左军 发表于 2012-4-28 17:42
"所以父类中的方法能不能跟父类一样也不可以被继承呢?"你这句话是想说什么?
继承父类,即是继承父类中的 ...

所以父类中的方法能不能跟被final修饰的父类一样也不可以被继承呢 其实我想问的意思是这个意思 我去纠正问题
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马