- java接口中定义的变量在实现类中再次定义是被允许的,不会报变量定义过时的错误,奇怪?
- java的swing具有“封冻”的特点。具体不知道用途在哪里?
- 构造方法不会被继承,而父类却少了参数为空的构造方法时,子类是不能再建造参数为空的构造方法,原因就是创建子类时许依赖父类的默认构造方法。
- protected访问限制了只能是同目录下或它的子类是用,例如一个类的构造方法为protected,那么出了这个包外该对象实例是不能被创建的。
-
为提高性能而养成的一些编程习惯:
(1)尽量使用final,尽量试try——catch足够的小,尽量不要用static修饰符,尽量使用基础类型代替包装类,尽量不要重复创建对象(推选使用缓存),尽量在单线程中使用Stringbuild、HashMap,尽量使用finanlly释放系统资源,先记到这里,后面继续添加。
-
面向对象编程的特点就是封装、继承、多态而我们往往忽略了这些特点,既然可以继承那我们就需要把尽可能多的共同点抽象到父类中,这样就有牵一发动全身的目的,只修改父类的代码结构就可以满足需求的改变,既然有多态,那我们可以让底层框架实现不同的行为,其实这些好处是相对的,继承是高耦合的,所以对于不同的场景可以考虑聚合或组合,其实根据不同的场景我们可以考虑的使用设计模式思想编程,而设计模式就是应对不同场景设计的一种最优解决方案以达到高内聚低耦合的代码。
-
迪米特法则:如果两个类不彼此直接通信,那么两个类就不应该直接的发生关系。如果一个类需要调用另一个类的方法的话,可以通过第三者转发这个调用。
-
如何区分接口和抽象类:抽象类是对事物共同属性和行为的一种抽象,abstract说明这个对象是什么东西,而接口定义的是一种公共接口,interface说明这个对象有哪些方法。有的人说abstract也能定义抽象公用的方法,其实我们在细想我刚才说的,如果是abstract定义的公用方法,那说明这些方法是那一种特定类型的公用方法,而interface定义的是不同类型具有的公共方法接口。哈哈,如果你还迷糊就再看个实例,如果对于动物有运动run()的这个方法接口,空气,水,世间一切都有运动的特性,这时‘老天爷’说地球诞生了,一切都运动起来吧!这时就不应该再用抽象类定义统一接口了,而用该用interface定义统一接口,因为‘老天爷’只需要调用实现了interface对象的run()方法,这时世间一切都可以运动了。不知道你理解清楚抽象和接口的区别没。
-
依赖倒转原则:传统的过程性系统设计倾向于使高层次的模块依赖于低层次的模块;抽象层次依赖于具体层次。依赖倒转原则就是要把这种依赖关系倒转。即抽象不应该依赖细节,细节应该依赖抽象。要针对接口编程,不要针对实现编程。高层模块不应该依赖低层模块,两个都应该依赖抽象。
-
对于异常的处理,我个人理解,在业务层或底层我们尽量对异常进行抛出,而对于应用层我们需要对异常进行捕获并进行合理的处理。因为应用层决定着出异常时应该怎么做,总之,当有异常时我们无法判断出异常时怎么做那我们就对异常进行抛出,不要干那些越俎代庖的事。
-
反射是将程序从编译时延迟到运行时,如果不存在这个类那么该框架依赖该类就无法通过编译,如果利用反射,那么就将依赖延迟到运行时。其次,通过反射读取字符串也是可以在文件中变更,方便易维护易扩展。
- 如何定义类的构造方法是否需要添加那些参数:其一:一个类的创建必须具备该参数,例如一个人的出生,可以没有名字,但一定具有他的母亲。其二:为方便设置某些参数而使参数放在构造方法里,这些例子也是比较多的,你可以在JDK的源码中看到。
- 有些人抱怨static方法并不是“面向对象”的,因为它们具有全局函数的某些特点;利用static方法,我们不必向对象发送一条消息,因为不存在this。这可能是一个清楚的自变量,若您发现自己使用了大量静态方法,就应重新思考自己的策略。个人理解,static是面向某些集合对象的思想,其实也是一种便捷式面向对象的思想。
- Java提供了一个名为finalize()的方法,可为我们的类定义它。在理想情况下,它的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用finalize(),就可以在垃圾收集期间进行一些重要的清除或清扫工作。
- “进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开。”
这一点对于库来说是特别重要的。那个库的用户(客户程序员)必须能依赖自己使用的那一部分,并知道一旦新版本的库出台,自己不需要改写代码。而与此相反,库的创建者必须能自由地进行修改与改进,同时保证客户程序员代码不会受到那些变动的影响。
为达到这个目的,需遵守一定的约定或规则。例如,库程序员在修改库内的一个类时,必须保证不删除已有的方法,因为那样做会造成客户程序员代码出现断点。然而,相反的情况却是令人痛苦的。对于一个数据成员,库的创建者怎样才能知道哪些数据成员已受到客户程序员的访问呢?若方法属于某个类唯一的一部分,而且并不一定由客户程序员直接使用,那么这种痛苦的情况同样是真实的。如果库的创建者想删除一种旧有的实施方案,并置入新代码,此时又该怎么办呢?对那些成员进行的任何改动都可能中断客户程序员的代码。所以库创建者处在一个尴尬的境地,似乎根本动弹不得。
为解决这个问题,Java推出了“访问指示符”的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的。这种访问控制的级别在“最大访问”和“最小访问”的范围之间,分别包括:public,“友好的”(无关键字),protected以及private。根据前一段的描述,大家或许已总结出作为一名库设计者,应将所有东西都尽可能保持为“private”(私有),并只展示出那些想让客户程序员使用的方法。这种思路是完全正确的,尽管它有点儿违背那些用其他语言(特别是C)编程的人的直觉,那些人习惯于在没有任何限制的情况下访问所有东西。到这一章结束时,大家应该可以深刻体会到Java访问控制的价值。
然而,组件库以及控制谁能访问那个库的组件的概念现在仍不是完整的。仍存在这样一个问题:如何将组件绑定到单独一个统一的库单元里。这是通过Java的package(打包)关键字来实现的,而且访问指示符要受到类在相同的包还是在不同的包里的影响。所以在本章的开头,大家首先要学习库组件如何置入包里。这样才能理解访问指示符的完整含义。 - 为什么JAVA使用了不同的限定标识,例如 public、protected、private、default,这是我第一次有点深刻的理解到该标识的作用,设防我们站在不同的角度思考问题,如果你是“类创建者也就是库开发者”那么你此时希望给“库使用者”提供最少的public接口,这样才能使以后库的改动最灵活,当只希望该库中的类使用该方法那么就是用private修饰,如果考虑到该库中的包使用那就是用default限定,所以当你站在库开发者的角度时,那么就很容易理解JAVA限定符的作用了。
- 再论到底选择合成还是继承
无论合成还是继承,都允许我们将子对象置于自己的新类中。大家或许会奇怪两者间的差异,以及到底该如何选择。
如果想利用新类内部一个现有类的特性,而不想使用它的接口,通常应选择合成。也就是说,我们可嵌入一个对象,使自己能用它实现新类的特性。但新类的用户会看到我们已定义的接口,而不是来自嵌入对象的接口。考虑到这种效果,我们需在新类里嵌入现有类的private对象。
有些时候,我们想让类用户直接访问新类的合成。也就是说,需要将成员对象的属性变为public。成员对象会将自身隐藏起来,所以这是一种安全的做法。而且在用户知道我们准备合成一系列组件时,接口就更容易理解。“属于”关系是用继承来表达的,而“包含”关系是用合成来表达的。 - 累积开发
继承的一个好处是它支持“累积开发”,允许我们引入新的代码,同时不会为现有代码造成错误。这样可将新错误隔离到新代码里。通过从一个现成的、功能性的类继承,同时增添成员新的数据成员及方法(并重新定义现有方法),我们可保持现有代码原封不动(另外有人也许仍在使用它),不会为其引入自己的编程错误。一旦出现错误,就知道它肯定是由于自己的新代码造成的。这样一来,与修改现有代码的主体相比,改正错误所需的时间和精力就可以少很多。
类的隔离效果非常好,这是许多程序员事先没有预料到的。甚至不需要方法的源代码来实现代码的再生。最多只需要导入一个包(这对于继承和合并都是成立的)。
大家要记住这样一个重点:程序开发是一个不断递增或者累积的过程,就象人们学习知识一样。当然可根据要求进行尽可能多的分析,但在一个项目的设计之初,谁都不可能提前获知所有的答案。如果能将自己的项目看作一个有机的、能不断进步的生物,从而不断地发展和改进它,就有望获得更大的成功以及更直接的反馈。
尽管继承是一种非常有用的技术,但在某些情况下,特别是在项目稳定下来以后,仍然需要从新的角度考察自己的类结构,将其收缩成一个更灵活的结构。请记住,继承是对一种特殊关系的表达,意味着“这个新类属于那个旧类的一种类型”。我们的程序不应纠缠于一些细树末节,而应着眼于创建和操作各种类型的对象,用它们表达出来自“问题空间”的一个模型。 - final 与 空白final
final int i = 10; i = 100,这时是报错的;空白final为 final int j; 然后再初始化j。
- 浏览: 46559 次
- 性别:
- 来自: 西安
最新评论
-
ansjsun:
变量这个东西..可变的在继承中少用...你可以写抽象方法... ...
java中到底是继承父类变量还是访问父类变量 -
jackra:
如果如文中所述此处不应用继承而应使用聚合private在继承体 ...
java中到底是继承父类变量还是访问父类变量 -
audrey1226:
第2条, 在SWING中用的很多第9条, 在java的io包中 ...
Java中常用的设计模式 -
audrey1226:
Generally RuntimeExceptions are ...
让人吃惊的java exception异常 -
audrey1226:
keke8614 写道ohunbeyond 写道keke861 ...
java中到底是继承父类变量还是访问父类变量
相关推荐
资源名称:Java编程基础知识变量与数据类型资源目录:【】11957c6aed0bbd30e284837b53bc3a6f【】2.Java编程基础知识变量与数据类型1.数据类型初阶【】2.Java编程基础知识变量与数据类型10.浮点类型【】2.Java编程...
《Java编程基础知识点汇总及《JAVA程序设计》习题集》--答案
对于初学者来说,学习和研究这些小程序是掌握Java编程基础和实践能力的好方法。 首先,让我们深入了解一下Java编程的基础。Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)在1995年推出...
【Java编程小项目】是一个适合Java初学者及有一定基础的学习者进行实践的编程项目集合。这个项目涵盖了多种Java编程的基础概念和技术,旨在帮助学习者巩固理论知识,提升实际编程能力。 在Java编程中,首先需要了解...
电子科技大学的Java程序设计课程涵盖了Java...这些知识点是Java程序设计基础的重要组成部分,对于理解和掌握Java编程至关重要。通过深入学习这些概念,学生将能够编写、调试和优化Java程序,并为期末考试做好充分准备。
Java后端核心知识总结:并发编程篇 Java后端核心知识总结:MySQL篇 Java后端核心知识总结:Redis Java后端核心知识总结:RabbitMQ Java后端核心知识总结:Kafak Java后端核心知识总结:Dubbo篇 Java后端核心知识总结...
Java应用小程序,通常被称为Java小程序或Java Applets,是基于Java...通过实践其中的示例,开发者不仅可以掌握Java编程,还能了解到如何创建交互式的Web应用,为后续的Java Web开发或Android应用开发奠定坚实的基础。
JAVA 编程题全集知识点总结 本资源提供了一个完整的 JAVA 编程题全集,涵盖了大量的题目和经典的解法,非常适合刷学完基础、刷题前的知识总结与开拓。以下是从资源中提取的重要知识点: 1. JAVA 基础知识:资源中...
在本文中,我们将深入探讨Java编程的核心知识点,包括语法基础、面向对象编程、异常处理、集合框架、多线程、I/O流、网络编程以及一些常用的开发工具。 1. **语法基础**: Java的基础语法类似于C++,但更加强调...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和高效性而闻名。...通过阅读和实践这些代码,你可以逐步掌握Java编程的基础知识和技巧,从而深化对Java的理解,为成为一名合格的Java开发者打下坚实基础。
这个小程序不仅提供了基础的闹钟功能,也是学习Java编程和GUI设计的一个好案例。在这款应用中,我们可以看到Java的核心特性以及如何将它们应用于实际的桌面应用程序开发。 首先,我们要了解Java的基础知识。Java是...
"基于Java开发的小程序抽奖转盘"是一个使用Java编程语言构建的微型应用,主要用于实现抽奖功能,其界面可能呈现为一个旋转的转盘,用户可以通过交互进行抽奖活动。这样的程序通常用于线上活动、促销或者游戏场景,为...
本文档旨在为Java开发者提供一个 hệ thống的面试知识点整理,涵盖了Java的核心概念、JVM的工作原理、Java编程语言的基本语法和高级特性等多方面的知识点。下面是对该文档的详细解读。 JVM知识点 JVM(Java ...
综上所述,"基于Java的聊天小程序"涉及到的IT知识涵盖了网络编程、多线程、数据序列化、IO流、GUI编程、事件驱动、异常处理、设计模式以及网络安全等多个方面。通过学习和实践这样的项目,开发者可以深入理解Java在...
该标签清晰地表明了该资源的主要内容是关于 JAVA 编程和程序设计的。该标签包括三个部分:java、开发、程序设计。 知识点: * JAVA 是一种编程语言,主要用于开发大型应用程序。 * JAVA 编程需要学习和掌握各种...
《Java程序设计》通过对Java编程语言的全面介绍,引导读者快速地掌握Java编程语言的核心内容并学会灵活运用所学的语言知识及面向对象的编程思想。《Java程序设计》共分12章,内容包括Java语言概述、面向对象编程初步...
Java是一种广泛使用的高级编程语言,以其跨平台、安全性强...总的来说,这些题目覆盖了Java程序设计的基础概念,包括语法、面向对象、数据类型、控制流、数组以及类和对象的使用,是学习和理解Java编程的良好练习材料。
JAVA并发编程体系梳理脑图
Java程序设计知识点思维导图内容如下: 1、Java网络编程基础 2、输入流与输出流 3、继承与接口 4、JDBC与MySQL数据库 5、泛型与集合框架 6、Java多线程机制 7、类与对象 8、常用实用类 9、内部类、匿名类与Lambda...