当前位置: 首页 > news >正文

学Java第三十天------------多态

面向对象三大特征:封装、继承、多态

继承:避免代码重复

没有继承就没有多态

一、什么是多态?写法?

二、代码示例

         一个类的成员变量用private修饰,在本类的成员方法可以使用,比如get方法的return name;或者show方法的sout(name+","+age);   之后在测试类创建该类的对象时,也可以直接调用这些方法get/show/……,这样就可以访问被private修饰的成员变量

        一个类的成员方法被定义之后,就可以在本类被其他成员变量调用。也可以直接在子类的成员变量中调用父类的非私有成员变量。

       子类中的成员变量得是和父类不同的,所以子类的get/set方法是只子类中的成员变量即可,然后就是方法的重用@Override

      子类没有写有参构造函数,就不能在创建对象语句时直接赋值,但是可以在创建对象时什么也不写,因为无参构造方法是就算子类不写,系统也会默认加上的

1.父类---------Person

package com.itheima.exe8;

public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void show(){
        System.out.println(name+","+age);
    }
}

2.子类1-------Student

package com.itheima.exe8;

public class Student extends Person {

    @Override
    public void show(){
        System.out.println("学生信息为"+super.getName()+","+super.getAge());
        //也可以这样写:
        //System.out.println("学生信息为"+getName()+","+getAge());
    }



}

3.子类2-------Teacher

package com.itheima.exe8;

public class Teacher extends Person{
    @Override
    public void show(){
        System.out.println("老师信息为"+getName()+","+getAge());
    }
}

4.子类3-------Administrator

package com.itheima.exe8;

public class Administrator extends Person{
    @Override
    public void show(){
        System.out.println("管理员的信息为"+super.getName()+","+super.getAge());
    }
}

5.测试类----------Test

package com.itheima.exe8;

public class Test {
    public static void main(String[] args) {
        //先创建三个对象
        //因为这三个子类都没有定义构造方法,所以不能直接赋值,要用set方法
        Student s=new Student();
        s.setName("张三");
        s.setAge(18);

        Administrator a=new Administrator();
        a.setName("阿伟");
        a.setAge(28);

        Teacher t=new Teacher();
        t.setName("老王");
        t.setAge(40);

        register(s);
        register(t);
        register(a);
    }

    public static void register(Person p){
        p.show();
    }
}

三、总结

http://www.dtcms.com/a/45474.html

相关文章:

  • 20250226-代码笔记05-class CVRP_Decoder
  • 【无人机】无人机通信模块,无人机图数传模块的介绍,数传,图传,图传数传一体电台,
  • 什么是HA
  • keil主题(vscode风格)
  • ClickHouse
  • P1123 取数游戏
  • 实战案例:排查 Java 应用 CPU 飙高问题
  • 自由学习记录(40)
  • HFSS 仿真学习1 K波段定向耦合器
  • JAVA面试_进阶部分_netty面试题
  • 【Java】多线程篇 —— 多线程的基本使用
  • 58、深度学习-自学之路-自己搭建深度学习框架-19、RNN神经网络梯度消失和爆炸的原因(从公式推导方向来说明),通过RNN的前向传播和反向传播公式来理解。
  • 商城源码的框架
  • JAVA学习笔记038——bean的概念和常见注解标注
  • 计算机毕业设计SpringBoot+Vue.js体育馆使用预约平台(源码+文档+PPT+讲解)
  • Pytest之fixture的常见用法
  • AI人工智能机器学习之监督线性模型
  • 【广度优先搜索】图像渲染 岛屿数量
  • 7-1JVMCG垃圾回收
  • 【文献阅读】A Survey Of Resource-Efficient LLM And Multimodal Foundation Models
  • 如何保证 Redis 缓存和数据库的一致性?
  • 在编译Linux的内核镜像和模块时,必须先编译内核镜像,再编译模块,顺序不可随意调整的原因
  • 备战蓝桥杯Day11 DFS
  • React 常见面试题及答案
  • Mysql系统表
  • 【考试大纲】中级信息安全工程师考试大纲
  • HTMLS基本结构及标签
  • 神经网络之CNN图像识别(torch api 调用)
  • 建易WordPress
  • 算法-二叉树篇23-二叉搜索树中的插入操作