当前位置: 首页 > 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();
    }
}

三、总结

相关文章:

  • 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
  • 芜湖县住房建设局网站/最有吸引力的营销模式
  • 中国空间站真实图片/搜索引擎优化时营销关键词
  • 昆明专业的网站制作建设/网站优化提升排名
  • 公司网站内容模块布局/下载官方正版百度
  • 重庆知名做网站的公司/百度竞价推广的技巧
  • 潍坊网站建设方案推广/站长工具怎么关掉