Heim  >  Artikel  >  Backend-Entwicklung  >  SUNWEN-Tutorial – C# Advanced (4)

SUNWEN-Tutorial – C# Advanced (4)

黄舟
黄舟Original
2016-12-19 10:19:151236Durchsuche

Hallo zusammen, ich bin SUNWEN von der Wuhan Chinese Normal University, ich hatte endlich Zeit, am Nachmittag im Guiyuan-Tempel anzukommen, was nicht teuer ist Viele Fotos. Es wird nicht lange dauern, sie zu bekommen.

Lassen Sie uns dieses Mal auf den Punkt kommen. Was sind Attribute? Wenn ich zum Beispiel ein Mann bin, ist das „Männchen“ eine Eigenschaft einer Person Sehr einfach, haha! Das erste Beispiel zeigt, wie man ein Attribut deklariert, das geändert werden kann, und ein weiteres Beispiel, das ein abstraktes Attribut (Abstract) erstellt und erklärt, wie man es in einer Unterklasse verwirft. Fangen wir an.

Beispiel 1:


000: // PRertiesperson.cs
001: using System;
002: class Person
003: {
004: private Zeichenfolge myName = „N/A“;
005: private int myAge = 0;
006:
007: // Deklarieren Sie ein Zeichenattribut. Name
008: öffentliche Zeichenfolge Name
009: {
010: get
011: {
012: return myName
013: }
014: set
015: {
016: myName = value;
017: }
018: }
019:
020: // Deklarieren Sie eine Age-Eigenschaft vom Typ int
021: public int Age
022: {
023: get
024: {
025: return myAge;
027: set
028: {
029: myAge = value;
030 : }
031: }
032:
033: öffentlicher Override-String ToString()
034: {
035: return "Name = " + Name + ", Age = " + Age ;
036: }
037:
038: public static void Main()
039: {
040: Console.WriteLine("Simple Properties");
041:
042: // Eine Personeninstanz erstellen
043: Person person = new Person();
044:
045: //Attribute ausdrucken
046: Console.WriteLine("Person Details - {0}", Person);
047:
048: // Nehmen Sie einige Einstellungen für die Eigenschaften vor
049: person.Name = "Joe";
050: person.Age = 99;
051: Console.WriteLine(" Personendetails - {0}", Person);
052:
053: // Alter hinzufügen
054: person.Age += 1;
055: Console.WriteLine("Person details - {0}", person);
056: }
057: }
Die Ausgabe dieses Beispiels ist:

Simple Properties

Personendetails – Name = N/A, Alter = 0
Personendetails – Name = Joe, Alter = 99
Personendetails – Name = Joe, Alter = 100

Okay, ich Ich bin gestern wieder aufgestanden und bin ins Bett gerannt. Mal sehen, wie viele Artikel ich gestern schreiben kann Im obigen Programm können wir sehen, dass das Festlegen von Attributen einer Klasse, das Konzept von VB übernehmend, sich von Java unterscheidet (Das ist M$, TMD!) Einige Freunde fragen sich vielleicht, warum wir Console.WriteLine( verwenden können. ), um eine Objektperson zu drucken. Tatsächlich ist es sehr einfach, genau wie in JAVA: Wenn der Regler eine Druckmethode verwendet, ruft das Objekt automatisch seinen ToString() auf (toString in JAVA, TMD, fast wieder falsch! )-Methode. In Zeile 33 sehen wir, dass es sich bei dem Schlüsselwort override um eine Methode handelt, die die übergeordnete Klasse überschreibt Durch eine Kombination von get() und set() vervollständigt, gibt es natürlich auch etwas namens value. Darüber hinaus können Sie auch die Lese-/Schreibberechtigungen eines Attributs steuern, indem Sie einfach get() und set() entfernen. Wenn Sie beispielsweise keine Attribute schreiben möchten, verwenden Sie einfach nicht set(). Wenn Sie nicht lesen möchten, verwenden Sie get() nicht als JAVA in dieser Hinsicht (es ist vorbei, ich werde wieder verprügelt!).

Zweites Beispiel:

Dieses Beispiel zeigt, wie man abstrakte Attribute festlegt (Abstract What are). Abstrakte Attribute? Die sogenannten abstrakten Attribute sind ... (Leider jedes Mal so viel Unsinn! FT) Eine abstrakte Klasse bietet keine Ausführungsattributzugriffsverfahren und kann in Unterklassen ignoriert werden. Das folgende Beispiel enthält drei Dateien: und Sie müssen sie separat kompilieren, um das Ergebnis zu erhalten:

abstractshape.cs: Shape-Klasse, enthält eine abstrakte Eigenschaft „Area“

shapes.cs: Unterklasse von Shape

shapetest.cs: Anzeigeprogramm.

Um diese Programme zu kompilieren, führen Sie Folgendes aus: csc abstractshape .cs patterns.cs shapetest.cs. Nach dem Ausführen wird das ausführbare Programm shapetest.exe generiert.

000: // Propertiesabstractshape.cs
001: using System;
002:
003: öffentliche abstrakte Klasse Shape
004: {
005: private Zeichenfolge myId;
006:
007: public Shape(string s)
008: {
009: Id = s; // Dieser Satz ruft den Set Builder des Id-Attributs auf
010: }
011 :
012: öffentliche Zeichenfolgen-ID
013: {
014: get
015: {
016: return myId;
017: }
018:
019 : set
020: {
021: myId = value;
022: }
023: }
024:
025: public abstract double Area
026: {
027: get;
028: }
029:
030: public override string ToString()
031: {
032: return Id + " Area = " + double.Format (Bereich, „F“);
033: 🎜>034: 🎜>Wenn man sich dieses Programm ansieht, ist es eigentlich sehr einfach. Wenn das Objekt dieses Klassenpaares erstellt wird, ist der Initialisierungsteil 007-. 010, Es gibt die Parameter zum Erstellen des Objekts an das Id-Attribut. Anschließend können wir abstrakte Attribute mit Schnittstellen in JAVA vergleichen Geben Sie den Inhalt dieser Methode nicht an. Genau wie bei der abstrakten Eigenschaft Area gibt es eine Get-Methode, die jedoch nicht den Inhalt der Get-Methode angibt (möglicherweise kann sie nicht als Methode bezeichnet werden), dh was mit Get zu tun ist. Diese Angelegenheit wird dadurch bestimmt, dass ihre Unterklassen dies tun.

Zweite Datei: In dieser Datei überschreibt eine Klasse die Area-Eigenschaft.

000: // Propertiesshapes.cs

001: öffentliche Klasse Quadrat: Form

002: {
003: private int mySide;
004:
005: public Square(int side, string id) : base(id)
006 : {
007: mySide = side;
008: }
009:
010: public override double Area
011: {
012: get
013: {
014: return mySide * mySide;
015: }
016: }
017: }
018:
019: öffentliche Klasse Kreis: Form
020: {
021: privat int myRadius;
022:
023: public Circle(int radius, string id) : base(id)
024: {
025: myRadius = radius;
026 : }
027:
028: public override double Area
029: {
030: get
031: {
032: return myRadius * myRadius * System.Math.PI;
033 : }
034: }
035: }
036:
037: öffentliche Klasse Rechteck: Form
038: {
039: private int myWidth;
040: privat int myHeight;
041:
042: public Rechteck(int width, int height, string id) : base(id)
043: {
044: myWidth = width;
045: myHeight = height;
046: }
047:
048: public override double Area
049: {
050: get
051: {
052 : return myWidth * myHeight;
053: 🎜>054: 🎜>055: 🎜>Dieses Beispiel verwirrt uns ein wenig. Was scheint es zu sein? Vererbung, was Extends in JAVA entspricht. Ich denke schon. Schauen wir uns zuerst die dritte Datei an.

000: // Propertiesshapetest.cs
: öffentliche Klasse TestClass
002: {
003: public static void Main()

004: {

005: Shape[] Shapes =

006: {

007: neues Quadrat (5, „Quadrat #1“),
008: neuer Kreis(3, „Kreis #1“),
009: neues Rechteck( 4, 5, „Rechteck #1“)
010: };
011:
012: System.Console.WriteLine("Shapes Collection");
013: foreach(Form s in Formen)
014: {
015: System.Console .WriteLine(s);
016: 🎜>017:
018: 🎜>019: 🎜>Aus diesem Beispiel: Dieses Symbol bedeutet tatsächlich „erweitert“, was Vererbung bedeutet Um es ganz klar auszudrücken: Im folgenden Satz bedeutet „sunwenson“ „sunwen“, der Name bedeutet, dass die Klasse „sunwenson“ „sunwen“ erbt und die Klasse „sunwenson“ die Klasse „sunwen“ hat Es ist so einfach, einige Dinge in Sunwen zu löschen, aber dies ist eine wichtige Technologie in der Entwicklung moderner Software, da sie die Wiederverwendbarkeit der Software erheblich verbessern kann, sagten die Leute , ich bin nicht qualifiziert.

Die Ausgabe dieses Programms ist:

Formensammlung
Quadrat Nr. 1 Fläche = 25,00
Kreis Nr. 1 Fläche = 28,27
Rechteck Nr. 1 Bereich = 20,00
Das ist es, dieser Abschnitt ist wieder vorbei. Es ist etwas schwierig, diesen Abschnitt zu verstehen, insbesondere für diejenigen, die keine Erfahrung in der JAVA- oder C++-Programmierung haben. Aber keine Angst, seien Sie ruhig. Wenn Sie den Mut haben, weiter zu lernen, werden Sie auf jeden Fall etwas gewinnen. Ich muss mich auch ausruhen, hehe, ich habe noch nicht gefrühstückt

Das Obige ist der Inhalt des SUNWEN-Tutorials --- - C# Advanced (4). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn