继承的定义与使用

继承的定义与使用

继承的主要作用在于在已有基础上进行功能扩展,强调代码的可重用性。

要使用继承,必须满足“is-a”原则:Student is a Person

继承使用:子类使用extends关键字继承父类,无需重复编写代码的情况下拥有夫类的所有成员。子类拥有比父类更多的属性。

父类又称超类(super class)或基类。子类也称派生类;

class A{
    static{
        System.out.println("1.A类的静态块");
    }
    {
        System.out.println("2.A类的构造块");
    }
    public A(){
        System.out.println("3.A类的构造方法");
    }
}
public class B extends A{
    static{
        System.out.println("4.B类的静态块");
    }
    {
        System.out.println("5.B类的构造块");
    }
    public B(){
        System.out.println("6.B类的构造方法");
    }
    public static void main(String[] args){
    System.out.println("------start------");
     new A();
     new B();
     System.out.println("------end------");
    }
}

发生继承关系后,子类可以直接继承父类的操作,可以实现代码的重用。

继承的主要作用是对类进行扩充以及代码的重用。

1.子类对象 在进行实例化前一定会首先实例化父类对象。默认调用父类的构造方法后再调用子类的构造方法,进行子类对象初始化。

2.java只允许单继承,不允许多继承:一个类只能继承一个父类。

虽然不允许多继承,但是可以使用多层继承

3.在进行继承的时候,子类会继承父类的所有结构(包括私有属域)

**隐式继承:**继承父类的所有私有域(包含私有属性、方法 ),无法直接使用

**显示继承:**继承父类所哟属性,可以直接调用

方法覆写

发生在有继承关系的类之间,子类定义了与父类相同的方法、方法名称、参数个数、返回值类型都相同。

class Person{
    public void print(){
        System.out.println("1.[Person]类的print方法");
    }
}
class Student extends Person{
    public void print(){
        System.out.println("2.[Student]类的Print方法");
    }
}
public class Text1{
    public static void main(String[] args){
        new Student().print();
    }
}

注意两点(存在方法覆写时到底调用的是哪一个类的同名方法):

1.你当前使用的对象使用那个类new的;

2.当调用某个方法,如果该方法已经别被子类所覆盖,那么调用的一定是被覆写过的方法。

3,进行方法覆写时,被覆写不能够拥有比父类更为严格的访问控制权限。

访问权限

public(公共访问权限)>default(包访问权限)>private (仅限本类访问)

1.如果父类使用public进行方法声明,那么子类必须也使用public;

2.如果父类使用default,那么子类可以使用default或public;

3.方法覆写不能出现private权限

class Person{
    public void fun(){
      this.print();  
    }
    private void print(){//用private修饰,此方法仅限父类使用,子类无法得知此方法存在
        System.out.println("1.[Person]类的print方法");
    }
}
class Student extends Person{
    public void print(){//此时该方法是类定义的新方法,与父类方法无关
        System.out.println("1.[Student]类的print方法");
    }
}
public class Text2{
    public static void main(String[] args){
        new Student().fun();
    }
}
//运行结果为:1.[Person]类的print方法;

好的,我可以为您介绍一下 C++ 中继承与派生的相关知识,并且给您一个定义 Employee 类的示例代码。 在 C++ 中,继承是一种重要的面向对象编程技术,它允许我们在一个类的基础上定义另一个类。被继承的类称为基类或父类,继承的类称为派生类或子类。派生类可以继承父类的成员变量和成员函数,并且还可以添加自己的成员变量和成员函数。 下面是一个定义 Employee 类的示例代码: ```c++ // Employee 类的定义 class Employee { public: Employee(string name, int age, string gender, double salary); virtual ~Employee(); virtual void display() const; protected: string name_; int age_; string gender_; double salary_; }; // Manager 类的定义,它是 Employee 类的派生类 class Manager : public Employee { public: Manager(string name, int age, string gender, double salary, string department); virtual ~Manager(); virtual void display() const; private: string department_; }; ``` 在上面的代码中,Employee 类包含了一些基本的成员变量和成员函数,如姓名、年龄、性别和薪水,以及一个虚函数 display()。Manager 类是 Employee 类的派生类,它继承了 Employee 类的所有成员变量和成员函数,并且添加了一个部门名称的成员变量 department_ 和一个重载了 display() 函数的成员函数。 请注意,Employee 类的析构函数和 display() 函数都是虚函数,这是因为我们希望在派生类中重载这些函数时能够正确地调用它们。 以上是一个简单的继承与派生示例,希望能够帮助您更好地了解 C++ 中的面向对象编程技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值