c#和Java中的继承
2018-06-18 02:05:52来源:未知 阅读 ()
c#和Java:
1.首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。
2.子类并没有继承父类的构造函数,但是。子类会默认的调用父类无参数的构造函数,创建父类对象,让子类可以使用父类中的成员。
所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了,所以子类会报错。
解决办法(c#):
1)、在父类中重新写一个无参数的构造函数。
2)、在子类中显示的调用父类的构造函数,使用关键字:base()
public class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } private int _age; public int Age { get { return _age; } set { _age = value; } } private char _gender; public char Gender { get { return _gender; } set { _gender = value; } } public Person(string name, int age, char gender) { this.Name = name; this.Age = age; this.Gender = gender; } } public class Reporter : Person { public Reporter(string name, int age, char gender, string hobby) : base(name, age, gender) { this.Hobby = hobby; } private string _hobby; public string Hobby { get { return _hobby; } set { _hobby = value; } } public void ReporterSayHello() { Console.WriteLine("我叫{0},我是一名狗仔,我的爱好是{1},我是{2}生,我今年{3}岁了",this.Name,this.Hobby,this.Gender,this.Age); } }
在Java中:有必要介绍一下super关键字:
super关键字代表了父类空间的引用。 super关键字的作用: 1. 子父类存在着同名的成员时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员。 2. 创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法。 super关键字调用父类构造方法要注意的事项: 1. 如果在子类的构造方法上没有指定调用父类的构造方法,那么java编译器会在子类的构造方法上面加上super()语句。 2. super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句。 3. super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。 super关键字与this关键字的区别: 1. 代表的事物不一致。 1. super关键字代表的是父类空间的引用。 2. this关键字代表的是所属函数的调用者对象。 2. 使用前提不一致。 1. super关键字必须要有继承关系才能使用。 2. this关键字不需要存在继承关系也可使用。 3. 调用构造函数的区别: 1. super关键字是调用父类的构造函数。 2. this关键字是调用本类的构造函数。
1 class Fu{ 2 int x = 10; 3 String name; 4 public Fu(){ 5 System.out.println("Fu类无参的构造方法.."); 6 } 7 public Fu(String name){ 8 this.name = name; 9 System.out.println("Fu类带参的构造方法.."); 10 } 11 public void eat(){ 12 System.out.println("小头爸爸吃番薯.."); 13 } 14 } 15 class Zi extends Fu{ 16 int x = 20; 17 int num; 18 public Zi(String name,int num){ 19 super(name); //指定调用了父类带参的 构造方法... 20 this(); // 调用本类无参构造方法.. 21 //super(); //指定调用了父类无参构造方法。。。 22 System.out.println("Zi类带参的构造方法.."); 23 } 24 public Zi(){ 25 System.out.println("Zi类无参的构造方法.."); 26 } 27 public void print(){ 28 System.out.println("x = " +super.x); 29 } 30 public void eat(){ 31 System.out.println("大头儿子吃龙虾.."); 32 } 33 } 34 35 class Demo{ 36 public static void main(String[] args) 37 { 38 Zi z = new Zi("狗娃"); 39 40 } 41 }
3.继承的特性 继承的单根性:一个子类只能有一个父类 继承的传递性
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash