本文意在巩固基础知识,并不是对其进行深入剖析,如若对各位高手没有什么作用,请绕过。
本文为原创文,所有示例均是博主测试过的,欢迎大家批评指正,如有转载请标明出处,谢谢。
继承、封装和多态是面向对象编程的重要特性。
其成员被继承的类叫基类也称父类,继承其成员的类叫派生类也称子类。
派生类隐式获得基类的除构造函数和析构函数以外的所有成员。
派生类只能有一个直接基类,所以C#并不支持多重继承但一个基类可以有多个直接派生类。
继承是可以传递的
即:
如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,则 ClassC 会继承 ClassB 和 ClassA 中声明的成员。
 class A
    {
        
public void Sum(int i,int j)
        {
            
int sum = i + j;
            Console.WriteLine(
"I am A ,my sum ={0}",sum);
        }
    }
    
class B : A
    {
        
public void Minus(int i,int j)
        {
            
int minus = i - j;
            Console.WriteLine(
"I am B ,my minus ={0}", minus);
            this.Sum(3, 4);
        }

    }
    
class InheritanceTest1
    {
        
static void Main(string[] args)
        {
            B b 
= new B();
            b.Minus(
34);
            Console.Read();
        }
    }

结果:I am B ,my minus=-1

     I am A ,my sum = 7
试想一下,当基类Sum()方法是私有时,派生类还会继承该方法吗?
经过本人测试,没有在B类找到该方法,那么是不是它就没有被继承呢?其实不是的,私有成员其实已经被继承了,
但是它们却不可以被访问,因为私有成员只能被声明它们的类或结构体中才可访问,所以看上去像是没有被继承。

如果我们想降低访问基本,我们可以把基类Sum()方法定义为protected。
能够阻止某个类被其他类继承吗?
答案是可以的,C#提供了一个
    sealed class A
    {
        
int test;
        
public void Sum(int i,int j)
        {
            
int sum = i + j;
            Console.WriteLine(
"I am A ,my sum ={0}",sum);
        }
    }
    
class B : A 
    {
        
public void Minus(int i,int j)
        {
            
int minus = i - j;
            Console.WriteLine(
"I am B ,my minus ={0}", minus);
          
  this.Sum(34);       //编译器会报错    
        }
     }

相关文章:

  • 2021-07-07
  • 2021-07-30
  • 2022-01-23
  • 2021-09-03
  • 2021-04-12
  • 2021-08-21
  • 2021-11-28
  • 2021-12-01
猜你喜欢
  • 2021-05-31
  • 2021-10-13
  • 2021-10-02
相关资源
相似解决方案