静态类

.Net学习 第2季01 C#面向对象 基础

邮差的信 提交于 2020-04-07 02:00:06
.Net 视频学习第2季 C#面向对象 面向对象 基础 类是一个模板,不占内存,对象是根据模板生成的具象,占内存。 字段field:数据  方法method:函数  属性property:保护字段,对字段的赋值进行限定(将这部分封装在类中,外界不用理会如何实现)属性的本质就是两个方法 get() / set()  外部(甚至类内部的方法)通过属性对字段进行赋值/读取,get()/set()内部会进行限定,字段永远用private,属性才是public的。 namespace Proj { class Person { private int _age; public int Age {      get { return _age; } set { if (value < 0) { value = 0; } _age = value; } } } } 不写字段,只写属性是可以的,编译器会自动生成与属性对应的字段。写好字段后按ctrl+R+E可以生成对应属性。 创建类的对象(实例化)的关键字 new 非静态=实例,非静态类可以有静态成员,也可以有非静态成员,静态成员用类名调用(例如Console.WriteLine();),非静态成员用类的对象来调用。静态类只能有静态成员。注意成员包括字段、属性和方法。 所以对于一个静态的字段/属性,在非静态方法中用this也是访问不到的

Python中可以使用静态类变量吗?

会有一股神秘感。 提交于 2020-04-06 03:05:08
问题: Is it possible to have static class variables or methods in Python? Python中是否可以有静态类变量或方法? What syntax is required to do this? 为此需要什么语法? 解决方案: 参考一: https://stackoom.com/question/HrB/Python中可以使用静态类变量吗 参考二: https://oldbug.net/q/HrB/Are-static-class-variables-possible-in-Python 来源: oschina 链接: https://my.oschina.net/stackoom/blog/3214961

C#中的扩展方法及用途

五迷三道 提交于 2020-03-29 23:41:57
GPS平台、网站建设、软件开发、系统运维,找森大网络科技! http://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=476 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 以上是msdn官网对扩展方法的描述,现在我通过一个情景例子来对此进行阐释。假设一个控制台程序class Program{}里面的主函数如下: static void Main(string[] args) { DateTime now = DateTime.Now; string time = now.ToString("yyyy-MM-dd HH:mm:ss"); Console.WriteLine(time); Console.ReadKey(); } 假设需求变了,日期的显示格式要变成"yyyy-MM-dd"这种格式,当然只需要初始化time时按下面写法改写即可: string time = now.ToString("yyyy-MM-dd"); 但是如果要改变日期格式的有很多个类呢?每个都要改一次吗?这样一旦需求变来变去就忙死人了。传统的解决方式是封装一个帮助类,在里面写方法

C#修饰符

吃可爱长大的小学妹 提交于 2020-03-23 12:00:18
修饰符用于限定类型以及类型成员的申明,c#中有13种修饰符,按功能可分为三部分:存取修饰符,类修饰符和成员修饰符. 存取修饰符: public:存取访问不受限制. private:只有包含该成员的类可以存取.当前类才能访问 internal:只有当前工程可以存取.只限于类所在的命名空间(不包括子类) protected:只有包含该成员的类以及继承的类可以存取. partial关键字: 类修饰符: abstract:抽象类,可以被指示一个类只能作为其它类的基类.必须被继承和重写的 sealed:密封类,指示一个类不能被继承.防止该类被其它类继承 成员修饰符:可以将类、结构或接口的定义拆分到两个或多个源文件中。每个源文件包含类定义的一部分,编译应用程序时将把所有部分组合起来 abstract:指示该方法或属性没有实现.只能在抽象类中声明 const:指定域或局部变量的值不能被改动. event:声明一个事件. extern:指示方法在外部实现. override:对由基类继承成员的新实现. readonly:指示一个域只能在声明时以及相同类的内部被赋值. static:指示一个成员属于类型本身,而不是属于特定的对象. virtual:指示一个方法或存取器的实现可以在继承类中被覆盖. 静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数

Java内部类

泄露秘密 提交于 2020-03-20 21:14:52
3 月,跳不动了?>>> java中的内部类主要分为4种,静态内部类,成员内部类,局部内部类和匿名内部类。 静态内部类就是定义在类内部的静态类。 成员内部类就是定义在类内部的非静态类,且里面不能有静态方法和静态变量。 局部内部类就是定义在类方法中的类。 匿名内部类没有关键字class,直接使用new来生成一个对象的引用。要求继承一个父类或实现一个接口。 来源: oschina 链接: https://my.oschina.net/u/3991724/blog/3207343

C#各版本新特性

瘦欲@ 提交于 2020-03-14 02:55:27
转 C# 2.0 泛型(Generics) 泛型是CLR 2.0中引入的最重要的新特性,使得可以在类、方法中对使用的类型进行参数化。 例如,这里定义了一个泛型类: class MyCollection<T> { T variable1; private void Add(T param) { } } 使用的时候: MyCollection<string> list2 = new MyCollection<string>();MyCollection<Object> list3 = new MyCollection<Object>(); 泛型的好处 编译时就可以保证类型安全 不用做类型装换,获得一定的性能提升 泛型方法、泛型委托、泛型接口 除了泛型类之外,还有泛型方法、泛型委托、泛型接口: //泛型委托 public static delegate T1 MyDelegate<T1, T2>(T2 item); MyDelegate<Int32, String> MyFunc = new MyDelegate<Int32, String>(SomeMethd); //泛型接口 public class MyClass<T1, T2, T3> : MyInteface<T1, T2, T3> { public T1 Method1(T2 param1, T3 param2) {

抽象类和抽象的方法注意事项

天大地大妈咪最大 提交于 2020-03-10 14:24:16
1:如果一个类用Abstract修饰,那么该类就是抽象类; 2:抽象方法中可以有方法体,也可以有普通方法 3:抽象方法不能有方法体,甚至连{}都不能有,直接以分号结尾; 4:抽象类可以有构造 5:抽象类不能实例化 6:抽象类不能是密封类或者静态类的 为什么不能是静态类的: 静态类会静态存储区构建一个类的实例,而抽象类不能实例化,所以两者是相违背的 为什么不能是密封类的: 抽象类是让别人去继承 ,然后重写抽象方法 密封类不想让别人去继承,两者是相违背的 7:如果一个类继承自抽象类,必须重写抽象类的所有方法,除非子类本身也是抽象类 8:一键重写的快捷键是:Ctrl+.,或者是alt +shif +F10 9:抽象类中的抽象方法用来约束子类方法的格式的 10:抽象方法必须存在于抽象类中 来源: https://www.cnblogs.com/3020815dzq/p/8304040.html

java面向对象5--内部类

谁说胖子不能爱 提交于 2020-02-28 05:28:01
6内部类 内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。 内部类可以是静态static的,也可用public,default,protected和private修饰。(而外部顶级类即类名和文件名相同的只能使用public和default)。 注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$inner.class两类。所以内部类的成员变量/方法名可以和外部类的相同。 6.1成员内部类   成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。 要注意的是,成员内部类不能含有static的变量和方法。 因为成员内部类需要先创建了外部类,才能创建它自己的 ,了解这一点,就可以明白更多事情,在此省略更多的细节了。 在成员内部类要引用外部类对象时,使用outer.this来表示外部类对象; 而需要创建内部类对象,可以使用outer.inner obj = outerobj.new inner(); public class Outer { public class Inner { public void print

我可以向现有的静态类添加扩展方法吗?

喜你入骨 提交于 2020-02-28 05:00:15
我很喜欢C#中的扩展方法,但在将扩展方法添加到静态类(例如Console)方面并没有取得成功。 例如,如果我想向控制台添加一个名为“ WriteBlueLine”的扩展,以便可以进行以下操作: Console.WriteBlueLine("This text is blue"); 我通过添加一个本地的,公共的静态方法(使用Console作为“ this”参数)来尝试了此操作……但是没有骰子! public static class Helpers { public static void WriteBlueLine(this Console c, string text) { Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine(text); Console.ResetColor(); } } 这没有向控制台添加'WriteBlueLine'方法...我做错了吗? 还是要求不可能? #1楼 也许您可以使用自定义名称空间和相同的类名称添加静态类: using CLRConsole = System.Console; namespace ExtensionMethodsDemo { public static class Console { public static void WriteLine(string

浅谈面向对象特征

血红的双手。 提交于 2020-02-27 05:53:32
所有的面相对象思想,归根结底是为了简化代码,减少代码量,构建更符合现实生活逻辑的程序代码,从而减轻程序员的负担。不能一味地或者说刻意地去使用面相对象的思想而忽略了程序所实现的功能或者框架,要根据实际情况 众所周知,面向对象编程的特点为:封装、继承、多态。C#是一门完全面向对象的语言,由于比Java推出的时间还要晚,所以对面向对象的思想的体现比Java还要完美,那么在C#中如何体现封装、继承和多态呢?下面举例并进行说明。 1.封装 封装的好处有以下几点: ①数据不外泄,可以做到一定的保护 ②类的使用者不用考虑具体的数据运算,方便 ③程序结构性强,层次清晰,便于维护 对相关的字段、方法进行封装固然对面向对象编程起到不可缺少的重要作用,但并不代表不可以访问类或者说具体的实例化对象中的内容,而且为使用者提供接口,仅仅让他们调用就可以了,他们只做他们的工作,不需要考虑或者顾及你写的类具体是做什么的,更不用考虑你写的每一行代码是什么意思。 在C#中,对于变量的封装,往往将需要被在本类以外调用的,以属性的形式出现,而不像C++中是直接以public成员或者private成员加上相关的方法调用,那样要么不符合面向对象的特点,要么太麻烦。 C#中属性的声明: 代码如下: public class TestClass { public string Info { get; set; } }