• Java学习之继承一


    引出继承

    在这里插入图片描述
    Pupil类

    package com.hspedu.entends_;
    //小学生 -> 模拟小学生考试的情况
    public class Pupil {
        public String name;
        public int age;
        private double score;
    
        public void setScore(double score) {
            this.score = score;
        }
        public void testing(){
            System.out.println("小学生" + name + "正在考小学数学...");
    
        }
        public void showInfo(){
            System.out.println("学生名" + name + " 年龄" + age + " 成绩" + score);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    Graduate类

    package com.hspedu.entends_;
    //大学生->模拟大学生考试的情况
    public class Graduate {
        public String name;
        public int age;
        private double score;
    
        public void setScore(double score) {
            this.score = score;
        }
        public void testing(){//唯一和Pupil不同的地方
            System.out.println("大学生" + name + "正在考大学数学...");
    
        }
        public void showInfo(){
            System.out.println("学生名" + name + " 年龄" + age + " 成绩" + score);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在Extends01中运行

    package com.hspedu.entends_;
    
    public class Extends01 {
        public static void main(String[] args) {
            Pupil pupil = new Pupil();
            pupil.name = "ada";
            pupil.age = 12;
            pupil.testing();
            pupil.setScore(60);
            pupil.showInfo();
    
            System.out.println("==============");
            Graduate graduate = new Graduate();
            graduate.name = "gigi";
            graduate.age = 21;
            graduate.testing();
            graduate.setScore(90);
            graduate.showInfo();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    运行结果
    在这里插入图片描述
    问题点:两个类除了testing()方法之外,所有的内容都一样,用继承来解决代码冗余度过高的问题

    继承基本原理(示意图)

    基本语法:
    子类 extends 父类{
    子类特有的属性和发方法
    }
    继承示意图

    在这里插入图片描述

    继承快速入门

    利用继承改进上述代码
    新建一个package:com.hspedu.entends_.improve_
    子类:Pupil

    package com.hspedu.entends_.improve_;
    //子类,只需要写其独特的属性和方法
    //让Pupil继承Student这个类
    public class Pupil extends Student{
        //Pupil独有的方法
        public void testing(){
            //必须继承之后才能使用name,因为Student里定义了name,可以直接用
            System.out.println("小学生" + name + "正在考小学数学...");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    子类:Graduate

    package com.hspedu.entends_.improve_;
    
    public class Graduate extends Student{
        //Graduate独有的方法
        public void testing(){
            System.out.println("大学生" + name + "正在考大学数学...");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    父类:Student

    package com.hspedu.entends_.improve_;
    //父类,是Pupil和Graduate的父类,拥有两个类共同的属性和方法
    public class Student {
        //共有属性
        public String name;
        public int age;
        private double score;
        //共有方法
        public void setScore(double score) {
            this.score = score;
        }
    
        public void showInfo(){
            System.out.println("学生名" + name + " 年龄" + age + " 成绩" + score);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在Extends01(package com.hspedu.entends_.improve_)中运行

    package com.hspedu.entends_.improve_;
    
    public class Extends01 {
        public static void main(String[] args) {
            Pupil pupil = new Pupil();
            pupil.name = "ada";
            pupil.age = 11;
            pupil.testing();
            pupil.setScore(75);
            pupil.showInfo();
    
            System.out.println("==============");
            Graduate graduate = new Graduate();
            graduate.name = "gigi";
            graduate.age = 20;
            graduate.testing();
            graduate.setScore(91);
            graduate.showInfo();
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    运行结果
    在这里插入图片描述
    tips:子类中一定要加关键字extends

  • 相关阅读:
    ubuntu22.04 CH340/CH34x 驱动安装
    不同选择器的语法
    micro-ROS中对消息的内存管理
    关于ETL的两种架构(ETL架构和ELT架构)
    青岛地铁交通咨询系统
    Android 网络动态监听和是否联网
    Jmeter的学习
    leetcode做题笔记139. 单词拆分
    archlinux上使用picgo
    P1540 [NOIP2010 提高组] 机器翻译(模拟)
  • 原文地址:https://blog.csdn.net/wjkqq0921/article/details/127977389