Computer >> Máy Tính >  >> Lập trình >> C#

Ghi đè Vs Shadowing trong C #

Ghi đè

Theo ghi đè, bạn có thể xác định một hành vi cụ thể cho kiểu lớp con, có nghĩa là một lớp con có thể triển khai một phương thức của lớp cha dựa trên yêu cầu của nó.

Hãy để chúng tôi xem một ví dụ về các lớp trừu tượng triển khai tính năng Ghi đè -

Ví dụ

using System;

namespace PolymorphismApplication {
   abstract class Shape {
      public abstract int area();
   }

   class Rectangle: Shape {
      private int length;
      private int width;

      public Rectangle( int a = 0, int b = 0) {
         length = a;
         width = b;
      }

      public override int area () {
         Console.WriteLine("Rectangle class area :");
         return (width * length);
      }
   }

   class RectangleTester {
      static void Main(string[] args) {
         Rectangle r = new Rectangle(10, 7);
         double a = r.area();
         Console.WriteLine("Area: {0}",a);
         Console.ReadKey();
      }
   }
}

Đổ bóng

Shadowing còn được gọi là phương pháp ẩn. Phương thức của lớp cha có sẵn cho lớp con mà không cần sử dụng từ khóa override trong shadowing. Lớp con có phiên bản chức năng tương tự của riêng nó.

Sử dụng từ khóa mới để thực hiện tạo bóng và tạo phiên bản riêng của hàm lớp cơ sở.

Hãy để chúng tôi xem một ví dụ -

Ví dụ

using System;
using System.Collections.Generic;

class Demo {
   public class Parent {
      public string Display() {
         return "Parent Class!";
      }
   }
   
   public class Child : Parent {
      public new string Display() {
         return "Child Class!";
      }
   }

   static void Main(String[] args) {
      Child child = new Child();
      Console.WriteLine(child.Display());
   }
}