学了下C#面向对象的重要特征---继承,想对比下Python是如何继承的。
先介绍下C#中类是怎么继承的。
创建Person父类;
定义父类共同的属性,比如身份证id,姓名name,年龄age和性别gender;
定义父类自己拥有的方法,比如无参的构造函数和有参的构造函数;
定义父类共同的方法,比如Dispaly。
public class Person
{
//定义Person父类共同属性
private string _id; //身份证id
public string Id
{
get { return _id; }
set { _id = value; }
}
private string _name;//姓名name
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age; //年龄age
public int Age
{
get { return _age; }
set { _age = value; }
}
private string _gender; //性别gender
public string Gender
{
get { return _gender; }
set { _gender = value; }
}
public Person()
{
}
public Person(string name, int age, string gender)
{
_name = name;
_age = age;
_gender = gender;
}
//Person父类的共有方法
public void Display()
{
Console.WriteLine("姓名:{0},性别:{1},年龄:{2}", this._name, this._gender, this._age);
}
}
创建学生子类,继承Person父类的共同属性和方法。
子类自定义子类拥有的属性:班级名称className,学号classId;
子类自定义子类拥有的方法:Study。
//创建Student,继承Person类
public class Student : Person
{
//定义Student子类的属性
private string _className; //班级名称className
public string ClassName
{
get { return _className; }
set { _className = value; }
}
private string _classId; //学号classId
public string ClassId
{
get { return _classId; }
set { _classId = value; }
}
public Student()
{
}
//定义Student子类独有的方法
public void Study()
{
Console.WriteLine("{0}正在学习...",this.Name);
}
}
在Program.cs中的Main方法中添加一下代码,并进行测试。
class Program
{
static void Main(string[] args)
{
Person objPerson = new Person("人类一号",18,"男");
objPerson.Display();
Student objStudent = new Student();
objStudent.Name = "学生一号";
objStudent.Age = 18;
objStudent.Gender = "女";
objStudent.Display();
objStudent.Study();
Console.ReadKey();
}
}
C#执行结果:
以上是通过C#语言的继承介绍,现在简单的用Python来介绍下Python是如何继承的。
同样的Person父类和Student子类的使用。
class Person:
# 父类共有的属性
name = "人类一号"
age = 18
gender = "男"
def __init__(self):
print("父类默认执行,调用父类的构造方法")
# 创建父类的方法
def parentMethod(self):
print("姓名:%s,年纪:%d,性别:%s" % (Person.name, Person.age, Person.gender))
class Student(Person):
className = "班级一号"
classId = 1001
def __init__(self):
print("子类默认执行,调用子类的构造方法")
def studentMethod(self):
Student.name = "学生一号"
Student.age = 18
Student.gender = "女"
print("姓名:%s,年纪:%d,性别:%s" % (Student.name, Student.age, Student.gender))
print("%s的班级名称是%s,学号是%d" % (Student.name, Student.className, objStudent.classId))
# 创建父类的对象
objPerson = Person()
objPerson.parentMethod()
# 创建子类的对象
objStudent = Student()
objStudent.studentMethod()
Python执行结果: