继承抽象类习题答案

news2025/1/15 17:33:29

基础题目

第一题:概念辨析

  1. 什么叫做类与类的继承,作用是什么?
    • 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。
    • 作用是子类复用父类内容。
  2. 继承后,父类与子类之间,各成员有什么样的影响?
    • 成员变量:
      • 不重名,没有影响。
      • 重名,就近使用,使用super区分父类变量。
    • 构造方法:
      • 无影响,但是子类构造方法默认调用父类构造方法
    • 成员方法:
      • 不重名,没有影响。
      • 重名,子类重写父类方法。
  3. 子类中,如何调用父类的成员?如何使用本类的成员?
    • 父类成员方法:super.方法名
    • 父类非私有成员变量:super.变量名
    • 子类成员方法:this.方法名
    • 子类成员变量:this.变量名
  4. 抽象方法与普通成员方法有什么区别?
    • 抽象方法使用abstract关键字修饰,没有方法体。
    • 成员方法有方法体。
  5. 抽象类与普通类有什么区别?
    • 方法:
      • 抽象类可以包含抽象方法和成员方法。
      • 普通类不可以包含抽象方法,只有成员方法。
    • 对象:
      • 抽象类不可以创建对象。
      • 普通类可以创建对象。

第二题:语法练习

  • 语法点:继承,抽象类

  • 按步骤编写代码,效果如图所示:

在这里插入图片描述

  • 编写步骤:

    1. 定义抽象类A,抽象类B继承A,普通类C继承B
    2. A类中,定义成员变量numa,赋值为10,抽象showA方法。
    3. B类中,定义成员变量numb,赋值为20,抽象showB方法。
    4. C类中,定义成员变量numc,赋值为30,重写showA方法,打印numa,重写showB方法,打印numb,定义showC方法,打印numc。
    5. 测试类中,创建C对象,调用showA方法,showB方法,showC方法。
  • 参考答案:


		public class Test2 {
		    public static void main(String[] args) {
		        // 创建C对象
		        C c = new C();
		        // 调用c 中方法
		        c.showA();
		        c.showB();
		        c.showC();
		    }
		}
		
		abstract  class A{
		    int numa = 10;
		    public abstract void showA();
		}
		
		abstract  class B extends A{
		    int numb = 20;
		    public abstract void showB();
		}
		
		class C extends B{
		    int numc = 30;
		
		    @Override
		    public void showA() {
		        System.out.println("A类中numa:"+numa);
		    }
		
		    @Override
		    public void showB() {
		        System.out.println("B类中numb:"+numb);
		
		    }
		    public void showC(){
		        System.out.println("C类中numc:"+numc);
		    }
		}

第三题:语法练习

  • 语法点:继承,抽象类

  • 按步骤编写代码,效果如图所示:

在这里插入图片描述

  • 编写步骤:

    1. 模拟农学院动物医疗系统信息。
    2. 定义抽象家禽类(Poultry)
      1. 私有成员变量:动物种类(name),症状(symptom),年龄(age), 病因(illness)
      2. 提供空参和带参构造方法
      3. 成员方法:
        1. 抽象方法症状(showSymptom)
        2. 普通方法基本信息(showMsg)
        3. 提供setXxx和getXxx方法
    3. 定义普通鸭子类(Duck)
      1. 提供空参和带参构造方法
      2. 重写showSymptom方法,打印症状信息。
  • 参考答案:

		
		public class Test3 {
		    public static void main(String[] args) {
		        Duck duck = new Duck("鸭子", "感冒", "发烧", 2);
		        duck.showMsg();
		        duck.showSymptom();
		    }
		}
		
		/*
		1.定义抽象家禽类(Poultry)
		*/
		abstract class Poultry {
		    //	i.成员变量(私有):
		
		    private String name;
		    private String illness;
		
		    // 症状(symptom)
		    private String symptom;
		    //	年龄(age)
		    private int age;
		
		    //	ii.成员方法:  showSymptom
		    public abstract void showSymptom();
		
		    // 成员方法:  showMsg
		    public void showMsg() {
		        System.out.print("动物种类:" + name);
		        System.out.println(",年龄:" + age + "岁");
		        System.out.println("入院原因:" + illness);
		    }
		
		    //	iii.提供空参和带参构造方法
		    public Poultry() {
		        super();
		    }
		
		    public Poultry(String name, String illness, String symptom, int age) {
		        this.name = name;
		        this.illness = illness;
		        this.symptom = symptom;
		        this.age = age;
		    }
		
		    //	iv.提供setXxx和getXxx方法
		    public int getAge() {
		        return age;
		    }
		
		    public void setAge(int age) {
		        this.age = age;
		    }
		
		    public String getName() {
		        return name;
		    }
		
		    public void setName(String name) {
		        this.name = name;
		    }
		
		    public String getIllness() {
		        return illness;
		    }
		
		    public void setIllness(String illness) {
		        this.illness = illness;
		    }
		
		    public String getSymptom() {
		        return symptom;
		    }
		
		    public void setSymptom(String symptom) {
		        this.symptom = symptom;
		    }
		}
		
		// Duck 类
		
		class Duck extends Poultry {
		
		    public Duck() {
		
		    }
		
		    public Duck(String name, String illness, String symptom, int age) {
		
		        super(name, illness, symptom, age);
		
		    }
		
		    @Override
		
		    public void showSymptom() {
		
		        System.out.println("症状为:" + getSymptom());
		
		    }
		
		}

第四题:语法练习

  • 语法点:继承

  • 按步骤编写代码,效果如图所示:
    在这里插入图片描述

  • 编写步骤:

    1. 模拟教学管理系统师生信息。
    2. 定义Person类。
      1. 属性:姓名、年龄
      2. 构造方法:无参构造方法,有参构造方法
      3. 成员方法:getXxx方法,setXxx方法,显示基本信息showMsg方法
    3. 定义Teacher类,继承Person
      1. 属性:学科
      2. 构造方法:无参构造方法,有参构造方法
      3. 成员方法:getXxx方法,setXxx方法,讲课方法
    4. 定义Student类,继承Person
      1. 属性:分数
      2. 构造方法:无参构造方法,有参构造方法
      3. 成员方法:getXxx方法,setXxx方法,考试方法
  • 参考答案:


		  public class Test4 {
		
		      public static void main(String[] args) {
		  //		i.创建老师对象t,并把名称赋值为”王小平”,年龄赋值为30,工资赋值为8000
		          Teacher t = new Teacher("王小平", 30, "Java");
		  //		iii.调用老师对象t的讲解方法
		          t.teach();
		
		  //		iv.创建学生对象 s,并把名称赋值为”李小乐”,年龄赋值为14,成绩赋值为90分.
		          Student s = new Student("李小乐", 14, 90);
		  //		vi.调用学生对象 s 的考试方法
		          s.exam();
		      }
		  }
		
		   class Person {
		      // 名称(name)
		      private String name;
		      //	年龄(age)
		      private int age;
		
		      //	空参构造
		      public Person() {
		      }
		      //  带参构造
		      public Person(String name, int age) {
		          this.name = name;
		          this.age = age;
		      }
		      // setXxx和getXxx方法
		      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;
		      }
		  }
		  /*
		   2.定义老师类(Teacher),继承Person类
		   */
		   class Teacher extends Person {
		      //    course(科目)
		      private String course;
		      //	空参构造
		      public Teacher() {
		      }
		      //	带参构造方法
		      public Teacher(String name,int age, String course) {
		          super(name,age);
		          this.course = course;
		      }
		
		      //	提供setXxx和getXxx方法
		      public String getCourse() {
		          return course;
		      }
		      public void setCourse(String course) {
		          this.course = course;
		      }
		
		      public void teach() {
		          System.out.println(getName() +"老师,讲授"+course +"课");
		      }
		  }
		  /*
		   3.定义学生类(Student),继承Person类
		   */
		   class Student extends Person {
		      //	score(成绩)
		      private int score;
		      //	无参构造
		      public Student() {
		          super();
		      }
		      //	带参构造
		      public Student(String name, int age,int score) {
		          super(name, age);
		          this.score = score;
		      }
		
		      //	提供setXxx和getXxx方法
		      public int getScore() {
		          return score;
		      }
		      public void setScore(int score) {
		          this.score = score;
		      }
		
		      public void exam(){
		          System.out.println(getName()+"同学,考试得了:"+ score +"分");
		      }
		  }

第五题:语法练习

  • 语法点:继承

  • 按步骤编写代码,效果如图所示:

在这里插入图片描述

  • 编写步骤

    1. 模拟汽车网站信息。
    2. 定义汽车Auto类
      1. 属性:品牌,车长,价格
    3. 定义SUV继承Auto类
      1. 属性:小型车车长标准值:4295,中型车车长标准值:5070。
      2. 定义判断车型方法
        1. 判断小型车:小于小型车车长标准值
        2. 判断大型车:大于中型车车长标准值
        3. 判断中型车:大于小型车车长标准值并且小于等于中型车车长标准值
    4. 测试类中,创建若干SUV对象,保存到集合,遍历集合,输出中型SUV。
  • 参考答案:


		public class Test5 {
		    public static void main(String[] args) {
		        // 创建SUV对象
		        SUV suv1 = new SUV(5079, 750000);
		        SUV suv2 = new SUV(4813, 760000);
		        SUV suv3 = new SUV(4270, 127800);
		        SUV suv4 = new SUV(4545, 188800);
		
		        //添加到集合中
		        ArrayList<SUV> list = new ArrayList<>();
		        list.add(suv1);
		        list.add(suv2);
		        list.add(suv3);
		        list.add(suv4);
		
				// 遍历集合,查询中型SUV
		        for (int i = 0; i < list.size(); i++) {
		            SUV suv = list.get(i);
		            if (suv.midSUV()){
		                suv.showMsg();
		            }
		        }
		
		    }
		
		}
		// 定义汽车类
		class Auto {
		    private String type;
		    private double length;
		    private double price; 
		
		    public Auto() {
		    }
		
		    public Auto(String type, double length, double price) {
		        this.type = type;
		        this.length = length;
		        this.price = price;
		    }
		
		    public String getType() {
		        return type;
		    }
		
		    public void setType(String type) {
		        this.type = type;
		    }
		
		    public double getLength() {
		        return length;
		    }
		
		    public void setLength(double length) {
		        this.length = length;
		    }
		
		    public double getPrice() {
		        return price;
		    }
		
		    public void setPrice(double price) {
		        this.price = price;
		    }
			
		    public void showMsg() {
		        System.out.println("车型:" + type);
		        System.out.println("\t价格:" + price);
		        System.out.println("\t车长:" + length);
		
		    }
		
		}
		
		// 定义SUV类
		class SUV extends Auto {
		    // 车长标准
		    private int miniLength = 4295;
		    private int midLength = 5070;
		
		    public SUV(double length, double price) {
		        super("SUV", length, price);
		    }
			// 判断 小型车
		    public boolean miniSUV() {
		        return getLength() <= miniLength;
		    }
		
		    // 判断 大型车
		    public boolean largeSUV() {
		        return getLength() > midLength;
		    }
		
		    // 判断 中型车
		    public boolean midSUV() {
		        return getLength() > miniLength && getLength() <= midLength;
		    }
		}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/926911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

融合CDN 如何有效的抵抗DDoS攻击

绝大部分对外网站所有者都离不开CDN的支持&#xff0c;据统计&#xff0c;全球高达70%的互联网流量都是通过CDN来进行缓存和加速的&#xff0c;不论是国外知名的CDN厂商&#xff1a;如Cloudflare、AWS、Akamai等&#xff0c;还是国内主流的CDN厂商阿里云华为云腾讯云等&#xf…

vue 实现word文档预览和下载 docx-preview 和 vue-office

1.先下载引入 npm i docx-preview --save import { renderAsync } from docx-preview;2.使用 fetch(url) .then((response) > {let docData response.blob(); //将文件转换成bolb形式//选择要渲染的元素let childRef document.getElementsByClassName("childRef&qu…

【ulimit 命令】LINUX单进程能够打开的最大文件句柄数

Linux系统如何查看修改最大打开文件数,这个问题对于很多刚刚学习linux的小伙伴来说觉得有点奇怪。Linux系统和windows不同之处在于更强的多任务多线程,由于文件系统结构的不同linux针对不同进程不同用户都可以设置最打打开文件数。 查看当前系统最大的文件打开数,如下图 在…

5165. CCC单词搜索

题目链接&#xff1a;https://www.acwing.com/problem/content/5168/ 题目&#xff1a; 给定一个 RC 的大写字母矩阵。 请你在其中寻找目标单词 W。 已知&#xff0c;目标单词 W 由若干个不同的大写字母构成。 目标单词可以遵循以下两种规则&#xff0c;出现在矩阵的水平、…

c++11 标准模板(STL)(std::basic_istringstream)(四)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

电脑桌面日历提醒怎么设置?设置日期提醒的简单方法

在我们使用电脑办公或学习时&#xff0c;为了避免忘记重要事项&#xff0c;例如会议、截止日期等&#xff0c;我们常常希望能在电脑桌面设置日历提醒。一般来说&#xff0c;电脑系统自带的日历上可以新增日程并设置提醒日期。那么电脑桌面日历提醒怎么设置呢&#xff1f; 很多人…

RocketMQ-(7-1)-可观测-Metrics

RocketMQ 以 Prometheus 格式公开以下指标。您可以使用这些指标监视您的集群。 服务端 Metrics 指标生产者 Metrics 指标消费者 Metrics 指标 版本支持&#xff1a;以下指标 Metrics 是从 5.1.0 版本开始支持。 Metrics 指标详情​ Metric types​ 消息队列 RocketMQ 版定义…

微调llama2模型教程:创建自己的Python代码生成器

本文将演示如何使用PEFT、QLoRa和Huggingface对新的lama-2进行微调&#xff0c;生成自己的代码生成器。所以本文将重点展示如何定制自己的llama2&#xff0c;进行快速训练&#xff0c;以完成特定任务。 一些知识点 llama2相比于前一代&#xff0c;令牌数量增加了40%&#xff0…

CentOS7.9安装Java11

文章目录 Java11版本介绍安装步骤查看并卸载已有版本安装Java11最新版本配置生效 openjdk介绍 Java11版本介绍 Java 11是Java编程语言的一个重要版本&#xff0c;于2018年9月发布Java 11在语言特性、性能优化和安全性方面都有一些显著的改进&#xff0c;为Java开发者提供了更多…

.NetCore之log4net的使用

1.首先下载log4ne的包&#xff1a; 2.添加配置文件log4net.config <?xml version"1.0" encoding"utf-8" ?> <configuration><!-- This section contains the log4net configuration settings --><log4net><appender name&q…

初探函数式编程---以Map/Reduce/Filter为例

如函数式编程--酷壳[1] 总结&#xff0c; 函数式编程的三大特性; 数据不可变性 函数作为一等公民(函数可以像变量一样来创建/修改/传递 等) 尾递归优化(重用stack,减轻栈的压力) 函数式编程用到的几个技术&#xff1a; 函数式编程的理念&#xff1a;把函数当成变量来用&#xf…

亚马逊电咖啡壶UL1082测试标准

UL1082标准是适用于额定电压为120V,按照国家电气编码进行使用的便携式电咖啡壶&#xff0c;咖啡渗漏壶及其它酿造类器具&#xff0c;除了咖啡壶外&#xff0c;本标准也适用于荼壶、水煲、玻璃水煲、汤保温壶及其它类似器具。这些器具都具有以下特点&#xff1a; &#xff08;1…

Day06-Vue全家桶项目

Day01-Vue全家桶项目 一 全家桶项目介绍 Vue在使用脚手架创建项目的时候,提供前端工程化项目 目前主要学习了Vue基础:Vue指令、Vue组件开发、Vue样式、组件通信、生命周期 全家桶项目是很多技术结合的一种开发模式: 全家桶项目搭建路由搭建(前端路由)网络请求封装Elem…

【Java从0到1学习】11 Java集合框架

1. Collection 1.1 Java类中集合的关系图 1.2 集合类概述 在程序中可以通过数组来保存多个对象&#xff0c;但在某些情况下开发人员无法预先确定需要保存对象的个数&#xff0c;此时数组将不再适用&#xff0c;因为数组的长度不可变。例如&#xff0c;要保存一个学校的学生信…

华为数通方向HCIP-DataCom H12-821题库(单选题:81-100)

第81题 某公司新购入一台网络设备,作为网络管理员,初次配置该设备通常通过什么方式? A、FTP B、Telnet C、SNMP D、Console 口登录 答案: D 解析&#xff1a; 通常情况下&#xff0c;初次配置网络设备会通过Console口登录的方式进行。Console口是一种串口接口&#xff0c…

网络安全工程师岗位一览-徐庆臣(黑客洗白者)

安全服务工程师 安全运维工程师 渗透测试工程师 Web安全工程师 安全攻防工程师 等保测评工程师 …… 代码审计工程师 威胁分析工程师 无线安全工程师 安全研发工程师 移动安全工程师 云计算安全工程师 ……

Socket通信与WebSocket协议

文章目录 目录 文章目录 前言 一、Socket通信 1.1 BIO 1.2 NIO 1.3 AIO 二、WebSocket协议 总结 前言 一、Socket通信 Socket是一种用于网络通信的编程接口&#xff08;API&#xff09;&#xff0c;它提供了一种机制&#xff0c;使不同主机之间可以通过网络进行数据传输和通信…

算法通关村十三关 | 进制转换问题处理模板

1. 七进制数 题目&#xff1a;LeetCode504&#xff1a;504. 七进制数 - 力扣&#xff08;LeetCode&#xff09; 思路 进制转换&#xff0c;对几转换就是对几求余&#xff0c;最后将所有的余数反过来即可、如果num< 0&#xff0c;先取绝对值&#xff0c;再进行操作。 100转7…

Ceres Solver 入门

1. Ceres Solver 是什么 Ceres 可以解决以下形式的边界约束鲁棒化非线性最小二乘问题&#xff1a; 给定初始值&#xff0c;通过优化算法&#xff0c;得到最优解。 其中&#xff0c; f i f_i fi​是CostFunction&#xff0c;也叫误差函数&#xff0c;或者代价函数。 ρ i \rho…

第十七课:利用 Setup Factory 制作 Qt 软件安装包

功能描述&#xff1a;详细介绍如何利用 Setup Factory 制作 Qt 软件安装包&#xff0c;从 Setup Factory 软件下载、安装&#xff0c;到如何利用 Setup Factory 制作软件安装包&#xff0c;手把手教你将 Qt 应用程序制作成具有安装向导的安装包。 一、Setup Factory 简介 Setu…