String的不可变性:
替换的时候 "abc"--->"adc" 生成了两个 原有的并不会删除
当他再一次替换的时候 是由"abc"-->"aec" 而不是 从上一次替换的"adc"-->"aec
这样提高了效率 不必开辟新的内存空间 大量内存占用
对于String的不可变性的体现在这里也是:
因为不可变性 如果只是strl.Trim() 并没有传入strl
需要strl = strl.Trim() ;
所以没词对String进行修改 需要重新赋值
DateTime类:
面向对象:
一般选择父类对象 拥有更强的拓展性 兼容性
但是如果需要用到子类中的方法
需要将父类对象转换成子类 去实现方法 ,因为多态性,子类方法和父类方法不一样.
Dog d2 = new Dog();
d2 = d1 as Animal;
d2.say()
如此一来,选择父类对象 出现了较大的弊端 为了解决这一个矛盾
在重写方法时 父类下的方法加上virtual修饰
子类下重写的方法用override修饰 覆盖掉父类的方法
这样便可以直接使用父类对象去调用我们需要的那个重写了的子类方法
如果需要运用到父类的方法,则可以使用base.say() ; 和JAVA的super类似 他的意义在于:在原有的功能上增加方法 而不是覆盖掉
在JAVA当中是使用@override注释. 并且不会直接用父类对象
5:静态static:
与面向对象相斥 固定不变 没有继承 没有多态之说了 不需要实例化 直接在访问修饰符访问的范围内直接调用访问.
6.抽象类:
抽象方法,没有方法体的方法
子类继承抽象类要求实现父类所有抽象方法;否则继承了一个抽象方法 却没有实现,那么该子类也需要使用abstract修饰.
7.接口: