前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java - 面向对象中的三大特征

Java - 面向对象中的三大特征

作者头像
kenvie
发布2022-01-20 15:30:40
3030
发布2022-01-20 15:30:40
举报
文章被收录于专栏:kenviekenvie

面向对象

继承

什么是继承

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

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

定义格式

定义父类的格式:

代码语言:javascript
复制
public class 父类名称{
    //...
}

定义子类的格式:

代码语言:javascript
复制
public class 子类名称 extends 父类名称{
    //...
}

主程序:demo

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

父类(员工):Employee

代码语言:javascript
复制
public class Employee {
    //父类方法
    public void method(){
        System.out.println("方法执行!");
    }
}

子类(老师):Teacher

代码语言:javascript
复制
public class Teacher extends Employee{

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

}

应用

代码复用效果

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

代码语言:javascript
复制
public class Assistant extends Employee{
    //助教,子类,继承父类Employee
}

主程序demo修改如下

代码语言:javascript
复制
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

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

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

父类:Fu

代码语言:javascript
复制
public class Fu {
    public void method(){
        System.out.println("子类方法");
    }

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

子类:Zi

代码语言:javascript
复制
public class Zi extends Fu{

}

运行结果

应用举例

主程序类:main

代码语言:javascript
复制
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

代码语言:javascript
复制
public class Employee {
    public void work(){
        //一个work抽象类
    };
}

教师类:Teacher

代码语言:javascript
复制
public class Teacher extends Employee{
    //讲师,子类,继承父类Employee
    public void work(){
        System.out.println("讲师讲课");
    }
}

助教类:Assistant

代码语言:javascript
复制
public class Assistant extends Employee{
    //助教,子类,继承父类Employee
    public void work(){
        System.out.println("助教辅导");
    }
}

多态的好处

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

版权属于:kenvie

本文链接:https://cloud.tencent.com/developer/article/1937643

商业转载请联系作者获得授权,非商业转载请注明出处。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021 年 07 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面向对象
    • 继承
      • 什么是继承
      • 定义格式
      • 应用
      • 覆盖重写
      • 特点
    • 多态
      • 什么是多态:
      • 格式:
      • 应用举例
      • 多态的好处
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档