构造函数,重载方法,继承

<span style="font-size:18px;"> public class Teacher{</span>
<pre name="code" class="java" style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:18px;">      </span><pre name="code" class="java"><span style="font-size:18px;">     String name;</span>
<pre name="code" class="java"><span style="font-size:18px;">  </span>


<span style="font-size:18px;">  //有隐含的构造函数
    //public   类名(){}
      public Teacher(){System.out.println("执行了构造方法");}//创建对象时调用</span>

<span style="font-size:18px;"><span style="font-family: Arial, Helvetica, sans-serif;"></span></span>

<span style="font-size:18px;">//构造函数 的重载方法
public Teacher{String name)(name=name;}
  //方法  public 返回类型 方法名(){}
     //重载方法:在同一类中,方法名相同,参数的类型、个数、顺序不同的方法。构造函数也可以有重载方法
     public void teach(){System.out.println("老师教学1");}//无形参
     public void teach(int n){System.out.println("老师教学"+n);}//方法名相同,有形参
     public void teach(String name){System.out.println(name+"老师教学1");}方法名相同, 形参类型不同
     public void teach(String name ,int  n){System.out.println(name+"老师教学"+n);}方法名相同, 形参个数不同
     public void teach(int  n,String name ){System.out.println(n+"老师教学"+name<span style="font-family: Arial, Helvetica, sans-serif;">);}方法名相同, 形参顺序不同</span>
}
继承:子类有父类的非私有的属性和行为。public class 子类名 extends 父类名(){}
 public class Student{
     //属性
     int  age;
    String  name;
    //行为
   public void study(){};
}
public class Middlestudent extends Student{
    //已经有属性age和name,行为study.从父类Student 继承而来
  //增加新属性和行为
     int  weight;
     public void  eat(){}
}
</span>

 


### 构造函数重载继承 #### 1. 构造函数是否支持重载 构造函数支持重载构造函数重载指的是在一个类中定义多个构造函数,这些构造函数具有相同的名字(即类名),但参数列表不同。通过这种方式,可以为对象的初始化提供多种方式。例如,在 C++ 中,可以通过以下代码展示构造函数重载[^1]: ```cpp class Example { public: Example() { // 无参构造函数 std::cout << "Default Constructor" << std::endl; } Example(int a) { // 带一个参数的构造函数 std::cout << "Constructor with one int parameter: " << a << std::endl; } Example(double b, double c) { // 带两个参数的构造函数 std::cout << "Constructor with two double parameters: " << b << ", " << c << std::endl; } }; ``` 在上述代码中,`Example` 类定义了三个构造函数,分别接受零个、一个 `int` 类型和两个 `double` 类型的参数[^1]。 在 C# 中,构造函数重载的概念同样适用。例如,下面展示了如何在子类中调用父类的不同构造函数[^3]: ```csharp class Person { public Person() { Console.WriteLine("Person default constructor"); } public Person(string name, int age) { Console.WriteLine($"Person constructor with name={name} and age={age}"); } } class Chinese : Person { public Chinese() : base() { // 调用父类的无参构造函数 Console.WriteLine("Chinese default constructor"); } public Chinese(string name, int age) : base(name, age) { // 调用父类的带参构造函数 Console.WriteLine("Chinese constructor with name and age"); } } ``` #### 2. 构造函数是否支持继承 构造函数不支持直接继承。当一个类从另一个类派生时,派生类不会自动继承基类的构造函数。然而,派生类可以通过显式调用基类的构造函数来实现类似的效果。例如,在 C++ 中,派生类可以通过成员初始化列表调用基类的构造函数[^4]: ```cpp class Base { public: Base(int x) { std::cout << "Base class constructor with parameter: " << x << std::endl; } }; class Derived : public Base { public: Derived(int x, int y) : Base(x) { // 显式调用基类的构造函数 std::cout << "Derived class constructor with parameter: " << y << std::endl; } }; ``` 在 C# 中,子类可以通过 `base` 关键字调用父类的构造函数[^3]。例如: ```csharp class Person { public Person(string name, int age, char sex) { Console.WriteLine($"Person constructor: name={name}, age={age}, sex={sex}"); } } class Chinese : Person { public Chinese(string name, int age, char sex) : base(name, age, sex) { // 调用父类的构造函数 Console.WriteLine("Chinese constructor"); } } ``` 需要注意的是,如果父类的无参构造函数被重写,则子类需要显式调用父类的其他构造函数,否则会导致编译错误[^2]。 ### 总结 - 构造函数支持重载,允许在同一类中定义多个具有不同参数列表的构造函数。 - 构造函数不支持直接继承,但可以通过显式调用基类的构造函数实现类似的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值