疯狂JAVA讲义---第五章(下):面向对象

疯狂Java讲义 第五章 课后习题 代码 疯狂Java讲义 第五章 课后习题 代码,一共有五道题,包括编写学生类、定义Student类、定义普通人老师班主任学生学校并生成API文档、利用组合来实现类复用、定义交通工具汽车火车飞机这些类 立即下载

这章最后主要讲了复用:继承复用和组合复用,分别举了个例子来说明:

继承:eg

  1. class Animal
  2. {
  3.     private void beat()
  4.     {
  5.         System.out.println("心脏跳动...");
  6.     }
  7.     public void breath()
  8.     {
  9.         beat();
  10.         System.out.println("吸一口气,吐一口气,呼吸中...");
  11.     }
  12. }
  13. //继承Animal,直接复用父类的breath方法
  14. class Bird extends Animal
  15. {
  16.     public void fly()
  17.     {
  18.         System.out.println("我在天空自在的飞翔...");
  19.     }
  20. }
  21. //继承Animal,直接复用父类的breath方法
  22. class Wolf extends Animal
  23. {
  24.     public void run()
  25.     {
  26.         System.out.println("我在陆地上的快速奔跑...");
  27.     }
  28. }
  29. public class TestInherit
  30. {
  31.     public static void main(String[] args)
  32.     {
  33.         Bird b = new Bird();
  34.         b.breath();
  35.         b.fly();
  36.         Wolf w = new Wolf();
  37.         w.breath();
  38.         w.run();        
  39.     }
  40. }

 

组合:

  1. class Animal
  2. {
  3.     private void beat()
  4.     {
  5.         System.out.println("心脏跳动...");
  6.     }
  7.     public void breath()
  8.     {
  9.         beat();
  10.         System.out.println("吸一口气,吐一口气,呼吸中...");
  11.     }
  12. }
  13. class Bird
  14. {
  15.     //将原来的父类嵌入原来的子类,作为子类的一个组合成分
  16.     private Animal a;
  17.     public Bird(Animal a)
  18.     {
  19.         this.a = a;
  20.     }
  21.     //重新定义一个自己的breath方法
  22.     public void breath()
  23.     {
  24.         //直接复用Animal提供的breath方法来实现Bird的breath方法。
  25.         a.breath();
  26.     }
  27.     public void fly()
  28.     {
  29.         System.out.println("我在天空自在的飞翔...");
  30.     }
  31. }
  32. class Wolf
  33. {
  34.     //将原来的父类嵌入原来的子类,作为子类的一个组合成分
  35.     private Animal a;
  36.     public Wolf(Animal a)
  37.     {
  38.         this.a = a;
  39.     }
  40.     //重新定义一个自己的breath方法
  41.     public void breath()
  42.     {
  43.         //直接复用Animal提供的breath方法来实现Bird的breath方法。
  44.         a.breath();
  45.     }
  46.     public void run()
  47.     {
  48.         System.out.println("我在陆地上的快速奔跑...");
  49.     }
  50. }
  51. public class TestComposite
  52. {
  53.     public static void main(String[] args)
  54.     {
  55.         //此时需要显式创建被嵌入的对象
  56.         Animal a1 = new Animal();
  57.         Bird b = new Bird(a1);
  58.         b.breath();
  59.         b.fly();
  60.         //此时需要显式创建被嵌入的对象
  61.         Animal a2 = new Animal();
  62.         Wolf w = new Wolf(a2);
  63.         w.breath();
  64.         w.run();        
  65.     }
  66. }

后面讲了初始化块,以前不怎么用,刚知道他还分静态初始化和普通初始化。这个没什么好说的看代码就知道了。eg

  1. class Root
  2. {
  3.     static{
  4.         System.out.println("Root的静态初始化块");
  5.     }
  6.     {
  7.         System.out.println("Root的普通初始化块");
  8.     }
  9.     public Root()
  10.     {
  11.         System.out.println("Root的无参数的构造器");
  12.     }
  13. }
  14. class Mid extends Root
  15. {
  16.     static{
  17.         System.out.println("Mid的静态初始化块");
  18.     }
  19.     {
  20.         System.out.println("Mid的普通初始化块");
  21.     }
  22.     public Mid()
  23.     {
  24.         System.out.println("Mid的无参数的构造器");
  25.     }
  26.     public Mid(String msg)
  27.     {
  28.         //通过this调用同一类中重载的构造器
  29.         this();
  30.         System.out.println("Mid的带参数构造器,其参数值:" + msg);
  31.     }
  32. }
  33. class Leaf extends Mid
  34. {
  35.     static{
  36.         System.out.println("Leaf的静态初始化块");
  37.     }
  38.     {
  39.         System.out.println("Leaf的普通初始化块");
  40.     }   
  41.     public Leaf()
  42.     {
  43.         //通过super调用父类中有一个字符串参数的构造器
  44.         super("Struts2权威指南");
  45.         System.out.println("执行Leaf的构造器");
  46.     }
  47. }
  48. public class Test
  49. {
  50.     public static void main(String[] args) 
  51.     {
  52.         new Leaf();
  53.         new Leaf();
  54.     }
  55. }

本章练习

1.定义普通人,老师,班主任,学生,学校,提供适当属性和方法。。。。(这题比较空,我就用rose搞下)

 

2.上题用组合实现(也就把普通人对象通过构造传入,这太无聊了就不做了)

 

【RS】哨兵系列数据下载(哨兵2号Sentinel-2波段介绍、下载) 以哨兵二号为示例,分享如何下载欧空局的哨兵系列数据 阅读详情

相关推荐

语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch)

本文详细介绍了基于PyTorch的轻量级语义通信系统LICRnet的实现,专注于图像压缩重建中的语义信息保留。通过深度可分离卷积、可变窗口多尺度注意力等创新技术,显著降低计算量并提升性能,特别适用于无人机巡检、远程医疗等物联网场景。文章包含完整的代码实现、训练策略及部署优化方案。

weixin_27697385的博客 220

Java-java疯狂讲义-第五章面向对象(上)-5.7多态

5.7多态 http://c.biancheng.net/view/784.html 位移 https://www.cnblogs.com/laiso/p/9256120.htmljava Integer与int详解 java引用变量分为编译时类型、运行时类型。编译时类型由申明该变量时使用的类型决定,运行时类型由实际赋给的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多...

471

高通Camera HAL3调试实战:如何用camxoverridesettings.txt高效抓取日志与dump图像数据

本文深入探讨了高通Camera HAL3调试中camxoverridesettings.txt文件的高效应用,重点介绍了如何通过该文件精准控制日志输出级别与dump图像数据,帮助开发者快速定位移动影像系统中的问题。文章详细解析了日志分级配置、图像数据捕获技巧及典型问题排查流程,为高通Camera HAL3项目开发提供了实用技术点。

weixin_30315905的博客 861

疯狂JAVA讲义面向对象上(第五章)学习笔记

一: 简单零碎的知识汇总 1)java中定义类的简单语法如下: 其中修饰符可以是public,abstract, final或者完全省略这三个修饰符。 2)同一个类中定义顺序没有任何影响,各成员之间可以相互调用,但是static修饰的成员不能直接访问没有static修饰的成员 3)如果没有为类编写构造器,则使用默认构造器。 4)定义成员变量的语法格式如下:[修饰符] 类型 成...

ych12345xx的博客 375

深入解析XTEA加密算法的核心机制与优化策略

本文深入解析XTEA加密算法的核心机制与优化策略,详细介绍了XTEA在嵌入式系统和资源受限环境中的优势,包括其高效的加解密速度和低资源消耗。文章还探讨了XTEA的轮函数设计、关键参数优化策略以及实战应用中的性能对比,为开发者提供了安全增强方案和优化技巧。

k8l9m0n的博客 241

手把手教你用SNAP做全极化SAR图像分类

引言 最近在研究极化SAR图像分类方面的内容,发现用SNAP软件可以很方便的实现图像的分类。因为在入门过程中踩了很多坑,浪费了一些时间,为了不让大家踩坑,所以决定写下这篇教程。 前期准备 软件下载 SNAP是欧空局旗下的一个SAR图像处理软件,可以点击下载地址进行下载。 数据下载 数据下载地址:https://mdacorporation.com/sample_data/RS2_OK76385_...

zz651044657的博客 1万+

Java-java疯狂讲义-第五章面向对象(上)-5.1类和对象

5.1类和对象 类(class)和对象(object,也成实例,instance) 5.1.1定义类 定义一个类包括:构造器、成员变量和方法。类中各个成员的定义顺序没有影响、各个成员之间可以互相调用。PS:static修饰的成员不能访问没有static修饰的成员。 成员变量:用于定义该类或该类实例所包含的状态数据 方法:用于定义该类或该类实例的行为特征或者功能实现 构造器:用于构造该类...

417

Zotero on Mac: 高效文献管理与引用指南

本文为Mac用户提供了一份全面的Zotero高效文献管理与引用指南。从安装配置、文献收集管理、PDF深度阅读与笔记,到在Word中无缝插入引用和生成参考文献,详细讲解了核心工作流。同时推荐了ZotFile、Better BibTeX等必备插件,并介绍了利用同步与WebDAV实现跨设备无缝衔接的方法,助力研究者构建个人数字知识库,极大提升学术研究效率。

weixin_29281941的博客 1175

《疯狂Java讲义》第5章 面向对象(上)——课后练习

1、编写一个学生类,提供name、age、gender、phone、address、email成员变量,且为每个成员变量提供setter、getter方法。为学生类提供默认的构造器和带有成员变量的构造器。为学生类提供方法,用于描绘吃、喝、玩、睡等行为。 答案: import java.util.*; public class Student { //定义六个成员变量,并隐藏起来 pri...

大圣何来的博客 2144

YOLO11实战:手把手教你优化钢材表面缺陷识别模型(基于NEU-DET数据集)

本文详细介绍了如何使用YOLO11优化钢材表面缺陷识别模型,基于NEU-DET数据集进行实战训练。从数据增强、模型架构优化到训练过程控制,全面解析提升钢材缺陷检测性能的关键技术,特别针对裂纹、划痕等典型缺陷提出针对性解决方案。

weixin_29081163的博客 377

【UNet 改进 | 注意机制篇】UNet引入CA注意力机制(2021 CVPR),二次创新

在医学图像分割任务中,病灶区域往往形态各异、边界模糊,且经常与周围组织的对比度较低,这要求模型具备极强的特征提取和细节辨别能力。传统的U-Net网络虽然通过跳跃连接融合了多尺度特征,但在处理复杂语义和精细边缘时仍有不足,尤其是在捕获特征时常常忽略位置信息。为了解决这些痛点,本文引入了在计算机视觉领域表现出色的 CA(Coordinate Attention,协调注意力)机制。CA 巧妙地将位置信息嵌入到了通道注意力中,通过水平和垂直两个方向的一维池化,同时捕获长距离依赖和精确的位置坐标。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 183

[疯狂Java讲义精粹] 第五章|面向对象(下)

0. 几个关键字. final关键字修饰变量、方法和类: 系统不能为final变量重新赋值, 子类不允许覆盖父类的final方法, final类不能派生子类.abstract和interface两个关键字分别用于定义抽象类和接口. 抽象类和接口都是从多个子类中抽象出来的共同特征, 但抽象类主要作为多个类的模板, 接口则定义了多个类应遵守的规范.enum关键字用于创建枚举类. 枚举类是一种不能

180斤的专栏 1239

08-StarRocks性能调优FAQ

StarRocks性能调优摘要 本文提供了StarRocks数据库性能调优的常见问题解答,涵盖查询优化、索引设计、分区策略和系统配置等关键方面。主要内容包括:查询优化技巧(使用EXPLAIN分析、避免全表扫描、优化JOIN和聚合查询);索引选择与维护建议(高频查询列索引、复合索引);分区策略设计(时间分区、范围分区)及其管理方法;以及系统内存配置优化(JVM参数调整、查询内存限制设置)。这些优化措施可显著提升StarRocks的查询性能和系统效率。

欢迎来到我的博客,一起探索代码里的世界! 540

java疯狂讲义 第五章 面向对象(上)

一、this关键字 1、this关键字总是指向调用该方法的对象 2、调用成员变量(当该方法中有个同名局部变量时) static关键字: static表示这个成员或者方法是属于类的,无static则是属于实例对象的。 static的成员或方法应当用类去调用,非static的用实例对象 static成员不可访问非static成员,访问一个非static成员,只能重新创建一个对象 pa...

果子 331

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

第五章 面向对象(上) 疯狂 Java 讲义

面向对象四个基本特征:抽象,继承,封装,多态性。类可以被认为是一种自定义的数据类型,可以使用类来定义变量,所有使用类定义的变量都是引用变量。类用于描述客观世界中某一类对象的共同特征,而对象则是类的具体存在。类(class)和对象(object,也叫实例,instance),类可以理解成某种概念,对象才是一个具体存在的实体。对象是类的实例。一个类定义包含三个最常见的成员:构造器、成员变量和方法。构造...

洪海洋的博客 286

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

疯狂JAVA讲义---第五章(上):面向对象

第五章 面向对象(上)  这章前部分讲了面向对象的基础,过于基础了,由于我学过别的面向对象语言c++,C#等也就没难度了,对于没学过的,还是要自己搞搞脑子的,光看懂也没用,要自己多尝试用面向对象的思想来思考问题。书上讲了一个例子我们平时不注意的,先看代码public class Dog{    //定义一个jump方法     public vo

TERRY的技术日志 1828

疯狂java讲义第五章(面向对象(上))重点知识

1、对象的this引用。

yaoguaiba579567的博客 238

疯狂JAVA讲义---第五章(中)面向对象

接着上次讲面向对象,这次先讲隐藏和封装,看了李刚的这本书我才知道,原来访问控制符共分四个级别,我一直以为先c+样只有private,protected,public原来还有default这种基于private和protected之间,和private的区别就是default支持同一个包间的访问。看到default大家不要以为是什么关键字,其实就是private,protected,public一个

TERRY的技术日志 1597

【疯狂JAVA讲义5】第五章(面向对象上):Java的运行机制

编译语言的运行原理: 编译型语言:C、C++、Objective-C、Swift、Kotlin等高级语言 1.编译生成的目标程序(针对特定平台的机器指令),只能在特定的平台上运行,不能跨平台。 2.性能好 解释型语言:JavaScript、Ruby、Python等语言。 1.能跨平台 Java语言既有编译(不彻底的编译、编译成字节码文件),又有解释(每次运行时,由JVM将字节码翻译成对应平台的机器指令)。 1.性能好 2.能跨平台 【面试题】JVM的原理是什么? Jav...

weixin_42571453的博客 268

【疯狂JAVA讲义5】第五章(面向对象上):5.1类和对象

目录 5.1 类和对象 5.1.1 定义类 类: 成员变量: 方法: 构造器: 5.1.2 对象的产生和使用 5.1.3 对象、引用和指针 5.1.4 对象的this引用 5.1 类和对象 5.1.1 定义类 类: [ 修饰符 ] class 类名 { ≥0个构造器定义... ≥0个成员变量定义... ≥0个方法定义... } 修饰符:①对类:public/final/abstract/无; 类名:≥1个单词连缀(大写首字母) 成员变量: [修饰符] 类型 成员变

weixin_42571453的博客 356

Java-java疯狂讲义-第五章面向对象(上)-5.9初始化块

5.9初始化块 5.9.1使用初始化块 初始化块是 Java 类里可出现的第 种成员(前面依次有成员变量、方法和构造器), 个类里可以 有多个初始化块,相同类型的初始化块之间有顺序 前面定义的初始化块先执行,后面定义的初始化块 后执行。 【修饰符】{ //todo初始化块的可执行代码 .... } 初始化块的修饰符只能是 tatic 使用 tatic 修饰...

360

【社区图书馆】疯狂 Java 讲义:但凡种种,不一而足

疯狂Java讲义(第6版)(上下册)》是由著名IT畅销书作家李刚所著的关于Java语言的权威书籍。本书的新版本在原有基础上增加了更多实例和案例,使得读者更容易理解和掌握该编程语言。此书主要面向想要学习Java编程的初、中级程序员以及对编程有兴趣的人群。该书在国内外广受好评,是Java学习必备之书。这一段真的是太官方了,一般你随便看一个书籍介绍,基本都会来上这么一段风格的文章,不管书怎样,先氛围搞起来的意思。

我在山城重庆,我希望能为这片软件沙漠地带贡献自己的一滴水,Stay tuned! 1943

疯狂Java讲义第六版电子书:Java学习者的必备资源

疯狂Java讲义第六版电子书:Java学习者的必备资源 【下载地址】疯狂Java讲义第六版电子书 《疯狂Java讲义》第六版电子书资源,为Java学习者和爱好者提供详实的学习材料。本书全面覆盖Java基础知识、面向对象编程、高级特性及Java Web开发,适合自学或教学参考。下载后,可使用任何PDF阅读器查看,内容仅供个...

gitblog_06700的博客 1511

疯狂java讲义第6版_疯狂java讲义第6版

疯狂java讲义第6版下载!疯狂java讲义第6版pdf是李刚打造的经典java编程图书的最新版,为了帮助更多的读者能真正掌握Java编程,感受到Java语言的魅力,领会到Java编程的快乐,作者根据多年来的Java授课经验,精心编写了本书,喜欢可以下载阅读!疯狂java讲义第6版pdf简介《疯狂Java讲义》是李刚所著的一本图书!本书并不是一个简单的Java入门教材,也不是一门“闭门造车”式的J...

weixin_33726568的博客 3793

学习《疯狂Java讲义第4版》PDF+代码+课件+面试题分析

学习java选择了《疯狂java讲义》最新的第四版,用了两个多月时间看完,一边阅读,一边敲代码。对Java有了不少新的认识。书中实例清晰明了,讲解也是娓娓道来。Java可以编写图形桌面系统,可以编写游戏,可以操作文件系统,可以进行网络传输。案例能够讲解各种Java基础知识。有意思,能够理解一些知识,敲代码,运行代码,感受代码的魅力!继续努力,学习与实践相结合!读书与实践相结合! 《疯狂Java讲...

weixin_30270561的博客 5703

疯狂Java讲义第五章重点知识

第五章 面向对象(上) 这是阅读李刚《疯狂Java讲义》后记录的关键知识。用于补充自己的知识盲区,所以并不会面面俱到。 1.在学习继承的时候了解到了一个新的概念:组合。组合和继承都是了代码的复用,不过组合需要构造更多对象,代码量更大。它的优势是降低了代码的耦合性,在软件维护阶段优势更突出。到底是该用组合还是继承,一个最清晰的判断方法就是问一问自己是否需要从新类向基类进行向上转型,需要的话就用继承,不需要的话就用组合方式。(后面有继承和组合的代码对比) 2.static修饰的成员不能访问不带static修饰地

weixin_50987928的博客 233

疯狂Java讲义第六版资源文件:Java学习者的必备工具

疯狂Java讲义第六版资源文件:Java学习者的必备工具 【下载地址】疯狂Java讲义第六版资源文件介绍 疯狂Java讲义第六版资源文件为Java学习者提供了全面的学习支持。该资源包含完整的示例代码、实践项目源码及配套教学视频,覆盖Java编程的各个方面,如基本语法、面向对象编程、异常处理、集合框架、多线程、网络编程和图...

gitblog_06792的博客 674
上一篇: 面向对象的重要概念
下一篇: 疯狂JAVA讲义---第六章(上):面向对象二
terryzero
博客等级 码龄19年 700粉丝 232原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值