• Java和C#的String类能被继承吗,为什么?


    答案是不能的。

    JAVA分析:

    因为我们查看String源码就知道,String被关键字final修饰,所以不能被继承。

    public final class String
        implements java.io.Serializable, Comparable<String>, CharSequence {
        /** The value is used for character storage. */
        private final char value[];
    
    }
    

      

    这里就要简单介绍一下final的基础。

    1、修饰类当用final去修饰一个类的时候,表示这个类不能被继承。注意:a. 被final修饰的类,final类中的成员变量可以根据自己的实际需要设计为fianl。b. final类中的成员方法都会被隐式的指定为final方法。说明:在自己设计一个类的时候,要想好这个类将来是否会被继承,如果可以被继承,则该类不能使用fianl修饰,在这里呢,一般来说工具类我们往往都会设计成为一个fianl类。在JDK中,被设计为final类的有String、System等。
    2、修饰方法
    被final修饰的方法不能被重写。
    注意:
    a. 一个类的private方法会隐式的被指定为final方法。
    b. 如果父类中有final修饰的方法,那么子类不能去重写。
    3、修饰成员变量
    注意:
    a. 必须初始化值。
    b. 被fianl修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
    c. 如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
    d. 如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。

    总之final就是像C语言中的const一样,代表一个常量,你在一开始初始化就要赋值,也不允许你改变它。

    C#解析:

    String类是sealed类故不可以继承。

    当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。String是这样定义的: public sealed class String : IComparable, ICloneable,IConvertible, IEnumerable

    sealed是密封百类的关键度字,只要类定义前面有这个关键字,其他类就无法集成此类,你自己回也可以定义一个sealed类,别人就答无法继承了。在下面的示例中,类 HoverTree 从类 Keleyi 继承,但是任何类都不能从类 HoverTree 继承。

    class Keleyi {} 
    sealed class HoverTree : Keleyi {}

    还可以在重写基类中的虚方法或虚属性的方法或属性上使用 sealed 修饰符。 这将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性。

  • 相关阅读:
    每日一题计划
    acm新手刷题攻略之poj
    Swift几行代码设置UIcollectionView的section底色,圆角
    简单几行代码设置UIcollectionView底色、section背景底色、背景色、背景阴影、背景圆角,支持CollectionView内容左对齐、居中对齐、右对齐、右对齐且右开始排序,支持底色点击反馈
    iOS12 EachNavigationBar导航栏操作出现黑边解决办法
    EachNavigationBar 导航栏颜色与给定颜色不相同设定
    详解冒泡排序法
    递归的简单用法
    判断一个整数是否为素数(质数)
    tcp黏包与拆包
  • 原文地址:https://www.cnblogs.com/shiyh/p/12802711.html
Copyright © 2020-2023  润新知