blog2
(1)前言:
第七周以来,我们学习了接口、正则表达式、继承和多态、异常处理和文本I/O、抽象类、JavaFX等内容。接口:
1.接口是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
2.接口不能用于实例化对象。
3.接口没有构造方法。
4.接口中所有的方法必须是抽象方法。
5.接口不能包含成员变量,除了 static 和 final 变量。
6.接口不是被类继承了,而是要被类实现。
7.接口支持多继承。
继承和多态:
1.构造方法用来的构造类的实例。不同于属性和方法,子类不会继承父类的构造方法。它们只能用关键字super 从子类的构造方法中调用。
2.构造方法可以调用重载的构造方法或其父类的构造方法。这种调用必须是构造方法的第一条语句。如果没有显式地调用它们中的任何一个,编译器就会把super)作为构造法的第一条语句,它
用的是父类的无参构造方法。
3.为了重写一个方法,必需使用与其父类中的方法一样的签名、一样或者兼容的返回类型来定义子类中的方法。
4.实例方法有可访问时才能重写。这样,私有方法不能被重写,因为她不能在类本身之外访问如果子类中定义的方法在父类中是私有的,那么这两个方法完全没有关系。
5.静态方法与实例方法一样可以被继承。但是,静态方法不能被重写,如果父类中定义的静态方法子类中重新定义,那么父类中定义的方法被隐藏。
6.如果一个方法的参数类型是某个父类(例如Object),则可以向该方法的参数传递任何子类(例如Circle类或String类)的对象,这称为多态。
7.因为子类的实例总是其父类的实例,所以总是可以将一个子类的实例转换成一个父类的变量。
正则表达式:
1.正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
2.正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
3.正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
(2)设计与分析:
7-1 sdut-String-2 识蛟龙号载人深潜,立科技报国志(II)(正则表达式):
本题核心是正则表达式,只要写出了可以正确检索的正则表达式,那么就成功了一半。
7-2 点线形系列4-凸四边形的计算:
涉及了许多图形的数学知识,并且需要考虑多种不同的情况,这就考验了我们对知识的熟练程度,以及代码的简洁程度,所以需要构建许多类方法。考验了我们如何判断错误情况,首先先要考虑是否符合基本格式,在判断是否有逻辑错误。
点与线(类设计):
在该题目中,需要Point类与Line类,体现了Java设计原则中的单一职责原则。
输出中格式保留两位小数可以用String类中的方法String.format("%.2f", data)。
点线面问题重构(继承与多态):
在本题当中,需要对上一题中的类设计进行改进,添加抽象类Element,并定义一个Element类的引用,分别使用调用以上四个对象的display()方法,从而实现多态特性。
点线面问题再重构(容器类):
在点线面问题重构(继承与多态)的基础上,本题添加了容器概念ArrayList的应用,添加了其他的类。ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。
(3)采坑心得:
在这些程序设计题目中,曾遇到了许多困难,例如在图形类设计中,我开始时并未注意to string方法,导致输出结果乱码,后面再对to string方法进行补充,问题才得以解决。还有Comparable 接口中的 CompareTo()方法,一开始并不清楚Compare To方法的使用,后面查询资料后得以了解。构造函数(constructor)是⼀种特殊的⽅法 。主要⽤来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符⼀起使⽤在创建对象的语句中 。特别的⼀个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的功能主要⽤于在类的对象创建时定义初始化的状态。构造⼀个对象,先调⽤其构造⽅法,来初始化其成员函数和成员变量。⼦类拥有⽗的成员变量和成员⽅法,如果不调⽤,则从⽗类继承⽽来的成员变量和员⽅法得不到正确的初始化。不能反过来调⽤也是这个原因,因为⽗类根本不知道⼦类有什么变量⽽且这样⼀来⼦类也得不到初始化的⽗类变量,导致程序运⾏出错!使用类之前,必须进行类的加载(类的初始化代码执行顺序)静态代码块 和 静态属性 按照代码书写顺序执行对象实例时,必须进行对象的构造过程(隐含着,可能出现类的加载)构造代码块 和 属性 按照代码书写顺序执行构造方法执行子类的加载之前,必须保证父类先加载完成(用到子类,隐含着用到父类)子类的的对象构造之前,先把父类的对象构造完。
(4)总结:
在今后的学习中,我应该更自主地学习JAVA内容,并对自己认为较难的部分(如链表)的设计多复习巩固,去搞清楚每一个知识点。并且在上课的过程中,应该更认真地进行学习,课后也要及时进行复习,对课内内容进行练习。在这几周的学习中,我对JAVA有了更深一步的了解与学习,我学习了继承与多态、抽象类、接口等内容。有些内容我仍然不是很了解,不是很明白,以至于在做题的过程中,碰到了难题与坎坷。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!