c#的继承和抽象类,(必知)_元宇宙-秩沅的博客-爱代码爱编程
目录
1.子类对父类成员的继承
子类是全部继承自父类,只不过是父类私有的成员,子类只是继承,但未具备访问的权限
2.c#重写和java重写的区别
1.c#重写:
父类需要加上修饰符,virtual ,子类需要重写方法需要加上 override ,
2,java的重写:
类似c#的隐藏函数,无修饰符,直接重写
3,父类虚方法和子类重写方法的应用
父类 xx= new 子类();
父类 . (子类重写方法的调用)
4,隐藏方法
1,操作:去掉父类和子类的修饰符 vritual 和 override ,但是子类要加上 new ,用来提醒程序员,在父类有同名方法现在是否确定重写 ,之后照常重写
2, 好处: 对父类的方法隐藏
5.抽象类的特点
1,抽象方法必须在抽象类里面
2,抽象 :abstract
3,不完整,因为它的抽象方法不具有函数体
4,可声明,不可实例化
子类继承抽象类的特点:
1.不是抽象类的子类如果要继承抽象父类那么就一定要重写父类中 的抽象方法,但是抽象子类不用重写
2.抽象类中可以有抽象成员也可以没有抽象成员
3.父类的构造函数有参数的时候,子类的构造函数也要把父类的参数并上去如下
public son( int a , int b ) : base (a ,b ){}
6,什么时候抽象类可构造函数,怎么进行操作
1,当抽象子类继承抽象父类进行抽象方法重写时,然后
抽象父类 xx =new() 子类 ; // 子类不是抽象的
xx.(子类重写方法的调用)
7,抽象方法 类似于虚方法
1.问题1: 抽象类 和 抽象方法的好处?
比如: NPC是一个怪物群体的统称,在NPC中它也规定有一个攻击方式一栏,那么比如说大大怪和小小怪,他们都是所属于NPC,但是他们的攻击方式需要自己去重写。
2.问题2:抽象方法 和虚方法的 好处?
说白了就是可以在子类进行重写
8.密封类和密封方法 --sealed
1.密封类: 不可被继承
2.密封方法 :针对子类的重写方法 ,只能重写一次
9.在子类调用父类上Java和c#有什么区别
1.java : 用super; 去调用分类隐藏的方法//父类的私有成员可以被继承但是不能被访问
2,c#: 用base;
10,访问修饰符的层级关系
访问修饰符级别低的不可以访问级别高的
11,命名空间的引用
也就是说要访问其他项目中的类该怎么操作:
1.在新建的项目中右键 添加 项目引用 ,选中确定
2.用using去添加
12,internal 和 public的区别
明显的区别在于前者只能同一个在项目(程序集)下使用,
13,Const 和 static的区别
1,static是静态变量,const是静态常量。
(1)static修饰变量,具有共享性
(2)static修饰方法,则方法中只能调用静态数据
(3)static修饰类,类中只能全部时静态成员,并且不能实例化,因为可以直接调用
形象比喻为 ,模板,直接拿来使用,具有公共性
2,用const修饰的量不可改变 ,且必须初始化,否则会报错
14,readonly什么时候用
是public 和 readonly修饰的变量 , 该变量 被你限制为只能在它的构造函数中给他赋值,而不能通过其他情况给他赋值
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace siki_测试2 { public class _readonly_ { public readonly int a; //在外面被调用是不能修改其值 public int b; //在外面 被调用时可以修改它的值 public _readonly_(int a, int b) { this.a = a; this.b = b; } } }
15,在访问类中静态成员的格式上,java和c#有什么区别
java访问类静态成员时用类成员名
c#则用类名访问