面向对象

继承

什么是继承

在继承的关系中,“子类就是一个父类”。子类可以被当做父类看待

例如:父类是员工,子类是讲师,那么“讲师就是一个员工”。

定义格式

定义父类的格式:

public class 父类名称{
    //...
}

定义子类的格式:

public class 子类名称 extends 父类名称{
    //...
}

主程序:demo

public class demo {
    public static void main(String[] args) {
        //创建了一个子类对象
        Teacher teacher = new Teacher();
        //用子类对象引用method方法
        teacher.method();
        //子类是空的,但是继承了父类,所以就把子类当做父类看待
    }
}

父类(员工):Employee

public class Employee {
    //父类方法
    public void method(){
        System.out.println("方法执行!");
    }
}

子类(老师):Teacher

public class Teacher extends Employee{

    //子类中是空的,但继承了父类

}

应用

代码复用效果

在原来的demo、Employee、Teacher基础上再建立一个子类(助教)Assistant

public class Assistant extends Employee{
    //助教,子类,继承父类Employee
}

主程序demo修改如下

public class demo {
    public static void main(String[] args) {
        //创建了一个老师子类对象
        Teacher teacher = new Teacher();
        //用子类对象引用method方法
        teacher.method();
        //子类是空的,但是继承了父类,所以就把子类当做父类看待

        //创建了一个助教子类对象
        Assistant assistant = new Assistant();
        //用子类对象引用method方法
        assistant.method();
        //子类是空的,但是继承了父类,所以就把子类当做父类看待
  
    }
}

覆盖重写

在父子类的继承关系当中,创建子类对象,访问成员方法的规则,创建的对象是谁,就优先用谁,如果没有就网上找

注意事项

无论是成员方法还是成员变量,如果没有都是向上找父类,绝不会向下找子类

重写(Override)的概念

在继承关系中,方法的名称一样,参数列表也一样

注意不要和方法重载混淆

重写(Override):方法的名称一样,参数列表【也一样】,覆盖,覆写

重载(Overload):方法的名称一样,参数列表【不一样】

特点

创建的是子类对象,则优先用子类方法

多态

什么是多态:

我是一个学生,也是一个人类

代码中体现多态性,其实就是一句话:父类引用指向子类对象

格式:

父类名称 对象名 = new 子类名称();

接口名称 对象名 = new 实现类名称();

主程序:demo

public class demo {
    public static void main(String[] args) {
        //多态写法
        //左侧父类的引用,指向右侧子类的对象
        Fu obj = new Zi();

        obj.method();
        obj.methodFu();
    }
}

父类:Fu

public class Fu {
    public void method(){
        System.out.println("子类方法");
    }

    public void methodFu(){
        System.out.println("父类特有方法");
    }
}

子类:Zi

public class Zi extends Fu{

}

运行结果

image.png

应用举例

1.jpg

主程序类:main

public class demo {
    public static void main(String[] args) {
        //如果不用多态的写法是:
        Teacher one = new Teacher();
        one.work();//讲师讲课
        Assistant two = new Assistant();
        two.work();//助教辅导

        //多态写法
        Employee one1 = new Teacher();
        one1.work();//讲师讲课
        Employee two1 = new Assistant();
        two1.work();//助教辅导
    }
}

员工类:Employee

public class Employee {
    public void work(){
        //一个work抽象类
    };
}

教师类:Teacher

public class Teacher extends Employee{
    //讲师,子类,继承父类Employee
    public void work(){
        System.out.println("讲师讲课");
    }
}

助教类:Assistant

public class Assistant extends Employee{
    //助教,子类,继承父类Employee
    public void work(){
        System.out.println("助教辅导");
    }
}

多态的好处

无论右边new的时候换成哪个子类对象,等号左边调用方法都不会变化。

最后修改:2021 年 08 月 06 日
如果觉得我的文章对你有用,请随意赞赏