全文约2600字,预计阅读时间4分钟
马上要到2020年了,这里整理一个.NET 工程师面试题系列,希望年底或者明年金三银四跳槽的程序猿们带来一些帮助,建议收藏,如果文中答案有不准确的地方,请在评论中指出。
20.静态方法可以访问非静态变量吗?如果不可以为什么?
public:公开,访问无限制
internal:本项目内可以访问
internal protected:本项目的父子类可以访问
protected:子类可以访问
private:受保护的,只能在本类中使用,对外完全封闭
解释:同一操作作用于不同的对象,实现不同的结果。
作用:增强代码的灵活性,重用性,可读性
实现:通过派生类,覆写基类的虚方法、重写基类的override方法。
概念:构造函数的方法名与类型相同、没有返回类型
作用:完成对类的对象初始化
创建一个类的新对象时,系统会自动调用该构造函数初始化新对象,如果没有写定义,那么系统会自动提供一个不带任何参数的public 构造函数
重写方法:关键字用override修饰,派生类重写基类的方法,方法命名、返回类型,参数必须相同
重载方法:方法名必须相同,参数列表必须不相同,返回类型可以不相同。作用:重写主要是实现面向对象的多态性、重载主要是实现实例化不同的对象
都可以实现接口
1.class是引用类型,struct是值类型
2.class允许继承、被继承,struct不允许,只能继承接口
3.class可以初始化变量,struct不可以
4.class可以有无参的构造函数,struct不可以,必须是有参的构造函数,而且在有参的构造函数必须初始化所有成员
1.Class比较适合大的和复杂的数据,表现抽象和多级别的对象层次时。Struct适用于作为经常使用的一些数据组合成的新类型,表示诸如点、矩形等主要用来存储数据的轻量级对象时,偏简单值。
2.Struct有性能优势,Class有面向对象的扩展优势。
构造器Constructor不能被继承,因此不能重写,但可以被重载
相同点:都不能直接实例化
执行顺序:父类,子类,静态块,静态字段,非静态块,非静态字段,构造器,方法
接口可以继承接口,抽象类可以实现接口,抽象类可以继承实现类,但前提是实现类必须有明确的构造函数。
对父类成员进行重用,增加代码的可读性、灵活性。
对象和引用时分不开的,对象生成一个地址,放在堆里面,引用则指向这个地址,放在栈里面
不用定义、没有名字的类,使用一次便可丢弃。好处是简单、随意、临时的。
静态变量属于类,而不属于对象;并对所有对象所享;静态成员在加类的时候就被加载。
可以,不能有访问修饰符,不能初始化赋值。
当一个类需要用不同的实现来做同一件事情,此时应该用重写,而重载是用不同的输入做同一件事情
静态方法和非静态变量不是同一生命周期,静态方法属于类,非静态变量属于具体的对象,静态方法和具体的对象没有任何关联
联系客服