Csharp/CSharp Tutorial/Class/Base Class

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Add constructors to base class

<source lang="csharp">using System;

class Shape {

 double pri_width;  // private 
 double pri_height; // private  

 public Shape(double w, double h) { 
   width = w; 
   height = h; 
 } 

 // properties for width and height. 
 public double width { 
    get { return pri_width; } 
    set { pri_width = value; } 
 } 

 public double height { 
    get { return pri_height; } 
    set { pri_height = value; } 
 } 

 public void showDim() { 
   Console.WriteLine("Width and height are " + 
                      width + " and " + height); 
 } 

}

class Triangle : Shape {

 string style; // private 
  
 public Triangle(string s, double w, double h) : base(w, h) { 
   style = s;  
 } 

 // Return area of triangle. 
 public double area() { 
   return width * height / 2; 
 } 

 // Display a triangle"s style. 
 public void showStyle() { 
   Console.WriteLine("Triangle is " + style); 
 } 

}

class MainClass {

 public static void Main() { 
   Triangle t1 = new Triangle("isosceles", 4.0, 4.0); 
   Triangle t2 = new Triangle("right", 8.0, 12.0); 

   Console.WriteLine("Info for t1: "); 
   t1.showStyle(); 
   t1.showDim(); 
   Console.WriteLine("Area is " + t1.area()); 

   Console.WriteLine(); 

   Console.WriteLine("Info for t2: "); 
   t2.showStyle(); 
   t2.showDim(); 
   Console.WriteLine("Area is " + t2.area()); 
 } 

}</source>

Info for t1:
Triangle is isosceles
Width and height are 4 and 4
Area is 8
Info for t2:
Triangle is right
Width and height are 8 and 12
Area is 48

Add more constructors to base class

<source lang="csharp">using System;

class Shape {

 double pri_width;  // private 
 double pri_height; // private  

 public Shape() { 
   width = height = 0.0; 
 } 

 // Constructor for Shape. 
 public Shape(double w, double h) { 
   width = w; 
   height = h; 
 } 

 // Construct object with equal width and height. 
 public Shape(double x) { 
   width = height = x; 
 } 

 // Properties for width and height. 
 public double width { 
    get { return pri_width; } 
    set { pri_width = value; } 
 } 

 public double height { 
    get { return pri_height; } 
    set { pri_height = value; } 
 } 

 public void showDim() { 
   Console.WriteLine("Width and height are " + 
                      width + " and " + height); 
 } 

}

// A derived class of Shape for triangles. class Triangle : Shape {

 string style; // private 
  
 /* A default constructor. This automatically invokes 
    the default constructor of Shape. */ 
 public Triangle() { 
   style = "null"; 
 } 

 // Constructor that takes three arguments. 
 public Triangle(string s, double w, double h) : base(w, h) { 
   style = s;  
 } 

 // Construct an isosceles triangle. 
 public Triangle(double x) : base(x) { 
   style = "isosceles";  
 } 

 // Return area of triangle. 
 public double area() { 
   return width * height / 2; 
 } 

 // Display a triangle"s style. 
 public void showStyle() { 
   Console.WriteLine("Triangle is " + style); 
 } 

}

class MainClass {

 public static void Main() { 
   Triangle t1 = new Triangle(); 
   Triangle t2 = new Triangle("right", 8.0, 12.0); 
   Triangle t3 = new Triangle(4.0); 

   t1 = t2; 

   Console.WriteLine("Info for t1: "); 
   t1.showStyle(); 
   t1.showDim(); 
   Console.WriteLine("Area is " + t1.area()); 

   Console.WriteLine(); 

   Console.WriteLine("Info for t2: "); 
   t2.showStyle(); 
   t2.showDim(); 
   Console.WriteLine("Area is " + t2.area()); 

   Console.WriteLine(); 

   Console.WriteLine("Info for t3: "); 
   t3.showStyle(); 
   t3.showDim(); 
   Console.WriteLine("Area is " + t3.area()); 

   Console.WriteLine(); 
 } 

}</source>

Info for t1:
Triangle is right
Width and height are 8 and 12
Area is 48
Info for t2:
Triangle is right
Width and height are 8 and 12
Area is 48
Info for t3:
Triangle is isosceles
Width and height are 4 and 4
Area is 8

Call constructor in base class

<source lang="csharp">using System; public class BaseClass {

   public BaseClass(int x)
   {
       this.x = x;
   }
   public int X
   {
       get
       {
           return(x);
       }
   }
   int    x;

} public class Derived: BaseClass {

   public Derived(int x): base(x)
   {
   }

} class MainClass {

   public static void Main()
   {
       Derived d = new Derived(15);
       Console.WriteLine("X = {0}", d.X);
   }

}</source>

X = 15

Define base class another cs file

<source lang="csharp">//File: base.cs using System;

namespace BaseClassNS {

  public class MyBaseClass
  {
     public void PrintMe()
     {
        Console.WriteLine("I am MyBaseClass");
     }
  }

} ////////////////////////////////////// //MainClass.cs using System; using BaseClassNS; namespace UsesBaseClass {

  class DerivedClass : MyBaseClass
  {
  }
  class MainClass
  {
     static void Main()
     {
        DerivedClass mdc = new DerivedClass();
        mdc.PrintMe();
     }
  }

}</source>

Pass a derived class reference to a base class reference.

<source lang="csharp">using System;

class Shape {

 double pri_width;  // private 
 double pri_height; // private 

 public Shape() { 
   width = height = 0.0; 
 } 

 public Shape(double w, double h) { 
   width = w; 
   height = h; 
 } 

 public Shape(double x) { 
   width = height = x; 
 } 

 public Shape(Shape ob) { 
   width = ob.width; 
   height = ob.height; 
 } 

 public double width { 
    get { return pri_width; } 
    set { pri_width = value; } 
 } 

 public double height { 
    get { return pri_height; } 
    set { pri_height = value; } 
 } 

 public void showDim() { 
   Console.WriteLine("Width and height are " + 
                      width + " and " + height); 
 } 

}

class Triangle : Shape {

 string style; // private 
  
 // A default constructor. 
 public Triangle() { 
   style = "null"; 
 } 

 // Constructor for Triangle. 
 public Triangle(string s, double w, double h) : base(w, h) { 
   style = s;  
 } 

 // Construct an isosceles triangle. 
 public Triangle(double x) : base(x) { 
   style = "isosceles";  
 } 

 // Construct an object from an object. 
 public Triangle(Triangle ob) : base(ob) { 
   style = ob.style; 
 } 

 // Return area of triangle. 
 public double area() { 
   return width * height / 2; 
 } 

 // Display a triangle"s style. 
 public void showStyle() { 
   Console.WriteLine("Triangle is " + style); 
 } 

}

class MainClass {

 public static void Main() { 
   Triangle t1 = new Triangle("right", 8.0, 12.0); 

   // make a copy of t1 
   Triangle t2 = new Triangle(t1); 

   Console.WriteLine("Info for t1: "); 
   t1.showStyle(); 
   t1.showDim(); 
   Console.WriteLine("Area is " + t1.area()); 

   Console.WriteLine(); 

   Console.WriteLine("Info for t2: "); 
   t2.showStyle(); 
   t2.showDim(); 
   Console.WriteLine("Area is " + t2.area()); 
 } 

}</source>

Info for t1:
Triangle is right
Width and height are 8 and 12
Area is 48
Info for t2:
Triangle is right
Width and height are 8 and 12
Area is 48