Csharp/CSharp Tutorial/Class/Class hierarchy
Версия от 15:31, 26 мая 2010; (обсуждение)
Содержание
A multilevel hierarchy.
using System;
class Shape {
double pri_width; // private
double pri_height; // private
// Default constructor.
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);
}
}
class Triangle : Shape {
string style; // private
/* A default constructor. This invokes the default
constructor of Shape. */
public Triangle() {
style = "null";
}
// Constructor
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 ColorTriangle : Triangle {
string color;
public ColorTriangle(string c, string s,
double w, double h) : base(s, w, h) {
color = c;
}
// Display the color.
public void showColor() {
Console.WriteLine("Color is " + color);
}
}
class MainClass {
public static void Main() {
ColorTriangle t1 = new ColorTriangle("Blue", "right", 8.0, 12.0);
ColorTriangle t2 = new ColorTriangle("Red", "isosceles", 2.0, 2.0);
Console.WriteLine("Info for t1: ");
t1.showStyle();
t1.showDim();
t1.showColor();
Console.WriteLine("Area is " + t1.area());
Console.WriteLine();
Console.WriteLine("Info for t2: ");
t2.showStyle();
t2.showDim();
t2.showColor();
Console.WriteLine("Area is " + t2.area());
}
}
Info for t1: Triangle is right Width and height are 8 and 12 Color is Blue Area is 48 Info for t2: Triangle is isosceles Width and height are 2 and 2 Color is Red Area is 2
A simple class hierarchy.
- A class that is inherited is called a base class.
- The inheriting class is called a derived class.
- A derived class is a specialized version of a base class.
- A derived class has all of the variables, methods, properties, operators, and indexers from the base class
- A derived class adds its own unique elements.
The general form of a class declaration that inherits a base class:
class derived-class-name : base-class-name {
// body of class
}
Demonstrate when constructors are called.
The general form of calling base constructor:
derived-constructor(parameter-list) : base(arg-list) {
// body of constructor
}
Inherited Implementation
using System;
interface Interface1 {
void PrintOut(string s);
}
class BaseClass
{
public void PrintOut(string s)
{
Console.WriteLine("Calling through: {0}", s);
}
}
class Derived : BaseClass, Interface1
{
}
class MainClass
{
static void Main()
{
Derived d = new Derived();
d.PrintOut("object.");
}
}
Calling through: object.
Simple Inheritance
using System;
class Employee
{
public Employee(string name, float billingRate)
{
this.name = name;
this.billingRate = billingRate;
}
public float CalculateCharge(float hours)
{
return(hours * billingRate);
}
public string TypeName()
{
return("Employee");
}
private string name;
protected float billingRate;
}
class Manager: Employee
{
public Manager(string name, float billingRate) : base(name, billingRate)
{
}
public new float CalculateCharge(float hours)
{
if (hours < 1.0F)
hours = 1.0F;
return(hours * billingRate);
}
public new string TypeName()
{
return("Civil Employee");
}
}
class Test
{
public static void Main()
{
Employee e = new Employee("A", 15.50F);
Manager c = new Manager("B", 40F);
Console.WriteLine("{0} charge = {1}",
e.TypeName(),
e.CalculateCharge(2F));
Console.WriteLine("{0} charge = {1}",
c.TypeName(),
c.CalculateCharge(0.75F));
}
}
Employee charge = 31 Civil Employee charge = 40