internal class Program
{
private static void Main(string[] args)
{
var student
= new Student
(22,
"Jan Kowalski",
new() { 4,
4,
5 });
student.Hello();
var elementaryStudent
= new ElementaryStudent
(14,
"Anna Nowak",
new() { 5,
5,
5 },
32);
elementaryStudent.Hello(); // Elementary Student nie implementuje swoje Hello, więc wywoła się metoda z klasy bazowej
var universityStudent
= new UniversityStudent
(23,
"John Doe",
new() { 3,
3,
3 },
"C# jest super");
universityStudent.Hello(); // ta klasa robi override metody virtualnej, więc wywoła się implementacja z klasy pochodnej
}
}
public class Student
{
public int Age { get; set; }
public string Name { get; set; }
public List<int> Grades { get; set; }
public Student(int age, string name, List<int> grades)
{
Age = age; Name = name; Grades = grades;
}
public virtual void Hello()
{
Console.WriteLine($"My name is {Name}. My age is {Age}. My best grade is {Grades.Max()}");
}
}
public class ElementaryStudent : Student
{
public int UniformSize { get; set; }
public ElementaryStudent(int age, string name, List<int> grades, int uniformSize)
:base(age, name, grades)
{
UniformSize = uniformSize;
}
}
public class UniversityStudent : Student
{
public string ThesisTitle { get; set; }
public UniversityStudent(int age, string name, List<int> grades, string thesisTitle):
base(age, name, grades)
{
ThesisTitle = thesisTitle;
}
public override void Hello()
{
Console.WriteLine($"I'm from university. My thesis title is {ThesisTitle}");
}
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}