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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李景荣 中级黑马   /  2013-2-19 19:36  /  1897 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李景荣 于 2013-2-20 20:02 编辑

自己写的一个类被子类继承以后,不想子类重写父类中某个特定的方法需要怎么做啊??也是将父类的那个特定的方法定义为sealed????

评分

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

查看全部评分

8 个回复

倒序浏览
不加override就可以了
  class Program
    {
        static void Main(string[] args)
        {
            Person p = new Student();
            p.ShowMsg();  //I am a Person


        }
    }
    public class Person
    {
        public void ShowMsg()
        {
            Console.WriteLine("I am a Person");
        }
    }
    public class Student: Person         
    {
        public void ShowMsg()
        {
            Console.WriteLine("I am a Student");
        }
      
    }

评分

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

查看全部评分

回复 使用道具 举报
你可以用final修饰父类中的那个方法。如下:
  1. class DemoFZ
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Zi z = new Zi();
  6.                 z.method();
  7.                 z.func();
  8.         }
  9. }
  10. class Fu
  11. {
  12.         public final void func()
  13.         {
  14.                 System.out.println("fu----func");
  15.         }

  16.         public void method()
  17.         {
  18.                 System.out.println("fu----method");
  19.         }

  20. }
  21. class Zi extends Fu
  22. {
  23.         public void func()
  24.         {
  25.                 System.out.println("zi----func");
  26.         }

  27.         public void method()
  28.         {
  29.                 System.out.println("zi----method");
  30.         }

  31.        
  32. }
复制代码
子类覆盖了父类中的func方法,那么程序中会报错:



报错.png (4.65 KB, 下载次数: 37)

报错.png

点评

Zi extends Fu 是什么啊?final我也不知道是什么,不知道是什么意思  发表于 2013-2-19 20:00

评分

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

查看全部评分

回复 使用道具 举报
王立 发表于 2013-2-19 19:48
不加override就可以了
  class Program
    {

:o  不override会报绿线的吧?  我好像没表达清楚,我的意思其实是 父类的方法不想让子类继承要怎么做?
回复 使用道具 举报
李景荣 发表于 2013-2-19 19:55
不override会报绿线的吧?  我好像没表达清楚,我的意思其实是 父类的方法不想让子类继承要怎么做? ...

这个sealed,是不是c#中的啊?我只知道java中用final,就不会被覆写了。
回复 使用道具 举报
本帖最后由 王立 于 2013-2-19 20:02 编辑
李景荣 发表于 2013-2-19 19:55
不override会报绿线的吧?  我好像没表达清楚,我的意思其实是 父类的方法不想让子类继承要怎么做? ...

绿线提示加个new ,加不加效果一样,不想被继承,直接在子类不写就行了

class Program
    {
        static void Main(string[] args)
        {
            Person p = new Student();
            p.ShowMsg();  //I am a Person
            Student s = new Student();
            s.ShowMsg();  //I am a Person

        }
    }
    public class Person
    {
        public  void ShowMsg()
        {
            Console.WriteLine("I am a Person");
        }
    }
    public class Student: Person
    {

    }
回复 使用道具 举报
黄玉昆 发表于 2013-2-19 19:59
这个sealed,是不是c#中的啊?我只知道java中用final,就不会被覆写了。

对啊,是c#的,我是初学者:(
回复 使用道具 举报
黄玉昆 黑马帝 2013-2-19 20:04:47
8#
李景荣 发表于 2013-2-19 20:03
对啊,是c#的,我是初学者

这个还真不太清楚了,你可以百度找找
回复 使用道具 举报
黄玉昆 发表于 2013-2-19 20:04
这个还真不太清楚了,你可以百度找找

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