c#和Java中的继承

java

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.继承的特性  继承的单根性:一个子类只能有一个父类    继承的传递性

以上是 c#和Java中的继承 的全部内容, 来源链接: utcz.com/z/389970.html

回到顶部