- 浏览: 704950 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- Struts1.x (7)
- 事务 (2)
- Hibernate (11)
- 数据库 (14)
- JavaScript&Ajax (43)
- JSP&Servlet (2)
- Flex (1)
- 其它 (9)
- Java (22)
- 框架集成 (1)
- WebService (3)
- Tomcat (3)
- 加密和安全登录 (13)
- 基于原型的JavaScript (0)
- JavaDoc和Java编码规范 (3)
- CAS (1)
- 加密 (1)
- Axis2 (10)
- Ext2.x (3)
- SSH整合 (2)
- Ext (0)
- 正则表达式 (1)
- 设计模式 (4)
- 对象序列化技术 (3)
- CVS (2)
- Struts2 (6)
- Spring 2.x (7)
- Spring Security (2)
- Java 课程 (20)
- 程序员之死 (1)
- 软件测试 (6)
- UML (5)
- NetBeans (1)
- cxf (1)
- JMS (13)
- 设计 (5)
- ibatis2.x (3)
- Oracle (1)
- WebSphere (7)
- 概要设计 (1)
- DB2 (10)
- PowerDesigner (0)
- 软件工程 (5)
- rose (1)
- EA (1)
- LDAP (7)
- Portal&Portlet (3)
- MQ (10)
- ESB (4)
- EJB (2)
- JBoss (2)
最新评论
-
typeRos:
只有配置文件,没有代码么大神
Spring实现IBMMQ的JMS消息发布/订阅模式 -
panamera:
如果ActiveMQ服务器没有启动,这个时候消息生产者使用Jm ...
Spring JMSTemplate 与 JMS 原生API比较 -
lian819:
顶1楼, 引用文件, 配置属性, 太方便了
EXTJS 同步和异步请求 -
wilhard:
说得清楚明白
<%@ include file=""%>与<jsp:include page=""/>区别 -
刘琛颖:
总结的很好。受益了
javascript 父窗口(父页面)— 子窗口 (子页面)互相调用的方法
为了保证父类良好的封装性,不会被子类随意改变,设计父类通常应该遵循如下规则:
- 尽量隐藏父类的内部数据。尽量把父类的所有属性都设置成 private 访问类型,不能让子类直接访问父类的属性。
- 不要让子类可以随意访问、修改父类的方法。父类中那些仅为辅助其他的工具方法,应该使用 private 访问控制符修饰,让子类无法访问该方法;如果父类中的方法需要被外部类调用,必须以 public 修饰,但又不希望子类重写该方法,可以使用 final 修饰符;如果希望父类的某个方法被子类重写,但不希望被其它类自由访问,可以使用 protected 来修饰该方法。
- 尽量不要再父类构造器中调用将要被子类重写的方法。例如:
class Base{
public Base(){
test();
}
public void test(){ // ① 号 test 方法
System.out.println("将被子类重写的方法");
}
}
class Sub extends Base{
private String name;
public void test(){ // ② 号 test 方法
System.out.println("子类重写父类的方法,其 name 字符串的长度" + name.length());
}
public static void main(String[] args){
// 下面代码会引发空指针异常
Sub s = new Sub();
}
}
当系统试图创建 Sub 对象时,同样会先执行其父类的构造器,如果父类的构造器调用了被其子类重写的方法,则变成了调用被子类重写后的方法。当创建 Sub 对象时,会先执行 Base 类中的 Base 构造器。而 Base 构造器中调用了 test 方法——并不是① 号 test 方法,而是调用了② 号 test 方法,此时 Sub 对象的 name 属性是 null,因此将引发空指针异常。
- 如果想把某些类设置为最终类,即不能被当成父类,则可以使用 final 修饰这个类,例如 JDK 提供的 java.lang.String 和 java.lang.System 类。除此之外,或者使用 private 修饰这个类中的所有构造器,从而保证子类无法调用该类的构造器,也就无法继承该类。对于把所有构造器都是用 private 修饰的父类而言,可以另外提供一个静态的方法,用于创建该类的实例。
发表评论
-
org.apache.commons.lang.StringUtils
2011-05-06 09:33 2588org.apache.commons.lang ... -
[转贴] 数据安全的关键:责任分离
2011-04-22 16:33 1294[转贴] 数据安全的关键 ... -
Log4j配置详解
2010-09-10 17:27 868原文地址:http://blog.chin ... -
深入研究java.lang.Process类
2010-07-24 06:54 1259原文地址:http://lavasoft.blog.51c ... -
深入研究java.lang.Runtime类
2010-07-24 06:52 1092原文地址:http://lavasoft. ... -
java.util.NavigableSet和NavigableMap
2010-07-03 13:41 2772Java 6对Nevigable接口做了 ... -
遍历 Map 的 N 种方式
2010-07-03 08:46 1783import java.util.HashMap;import ... -
Tomcat内存溢出的原因
2010-06-18 13:37 972在生产环境中tomcat内存设置不好很容易出现 ... -
JDK1.5 新增静态导入语法说明
2010-04-18 18:05 1362JDK1.5 以后新增加一种静态导入语法,用来导入指定 ... -
深入了解JAVA可变长度的参数(Varargs)
2010-03-24 09:34 1632(本文转载自csdn) 到J2SE 1.4为止,一直无法在J ... -
Sun 公司制定的 Java 虚拟机规范在技术上规定的 JVM 的统一标准
2010-03-23 23:25 1038Sun 公司制定的 Java 虚拟机规范在技术上规定了 ... -
ArrayList Vector LinkedList 区别与用法
2010-03-20 16:02 827ArrayList 和Vector是采用数组方式存储数据,此 ... -
如何判断字符串是否由纯数字组成(Java版本)
2010-02-03 13:45 4034public static boolean isNumeri ... -
Properties/ClassLoader
2010-01-15 16:08 1111Properties.list(PrintWriter out ... -
Map.Entry 类使用简介
2009-11-11 17:51 2293你是否已经对每次从Map中取得关键字然后再取得相应的值 ... -
List、Set、数组之间的转换
2009-04-06 15:21 1365原文地址: http://hi.baidu.c ... -
Java生成随机字母和数字
2009-02-27 20:47 5563功能: 生成随机的字母和数字混杂的字符串 函数的入参是生成的随 ... -
java版本的escape和unescape函数
2009-02-16 18:21 3558// java版本的escape和unescape函数 cl ... -
String.split()用法的一点经验
2008-11-13 11:20 1613在java.lang包中有String.split()方法,返 ... -
Java clone技术
2008-08-21 16:53 0Clone基本知识储备 在Java里提 ...
相关推荐
但要注意的是,C#不支持多重继承,即一个类不能直接从两个或更多个类继承。不过,通过接口,我们可以实现类似的效果。 C#的继承还涉及到方法的覆盖(Override)和隐藏(New)。当子类需要修改父类的方法实现时,...
在使用继承时,需要注意以下几点: 1. 一个子类只能继承一个父类,不能继承多个父类。这是因为Java语言不支持多继承机制。 2. 在子类的构造方法中,必须将父类的构造方法调用放在第一句,否则将会出现编译错误。 3....
这个文件很可能是包含了基窗体和一个或多个子窗体的C#项目,通过阅读和分析代码,你可以了解如何定义和使用窗体继承。注意观察如何定义基窗体类,以及子窗体如何继承基窗体并添加自己的特性。通过这样的学习,你将...
- **信号与槽(Signals & Slots)**:Qt的事件驱动机制,通过继承QObject,可以使用信号和槽进行通信。 - **QWidget类**:用于构建图形用户界面的基本组件,继承自QObject。 - **自定义控件**:可以通过继承已有...
- 如果“一个X对象本质上也是Y对象”,考虑使用继承(如“大学生”是“学生”的一种)。 - 如果“一个X对象内部包含一个或多个Y对象”,则使用复合(如“狗”包含“主人”)。 正确的设计选择能够避免冗余代码,...
值得注意的是,子女的概念包括婚生子女、非婚生子女、养子女以及与被继承人存在扶养关系的继子女。同样,父母不仅指生父母,还包括养父母和有扶养关系的继父母。 特殊情形下的法定继承情况包括以下几点: 1. 如果被...
面向对象程序设计是C++的核心特性之一,其中的继承与派生是构建复杂系统的关键工具。继承机制允许我们创建新的类(派生类)基于已存在的类(基类),这体现了"IS-A"的关系,即派生类是基类的一种特例。例如,"国光...
但请注意,这并不创建新的属性,而是提供了对基类虚属性的不同实现。 2. **虚属性**:使用`virtual`修饰符声明的属性,其get和set访问器都是虚拟的,可以在派生类中被覆盖。 3. **抽象属性**:用`abstract`修饰的...
JavaSE进阶面向对象继承 继承是Java语言中的一种机制,允许一个类继承另一个类的特征和行为。...* 继承的注意点是继承的类应该具备is-a关系,继承的类应该具有共同的特征和行为,继承的类应该避免多继承。
因此,选择使用组合还是继承应根据具体需求权衡,通常建议优先考虑组合,因为它提供了更高的灵活性和封装性。 总的来说,理解和熟练掌握组合和继承的联合使用是提升C++编程能力的关键步骤。通过合理的设计,我们...
- 注意内存管理,避免因不必要的视图创建和销毁导致的性能问题。 - 使用`ViewStub`或懒加载策略,只有在需要时才加载特定tab的布局,提高应用的启动速度和运行效率。 通过以上步骤,我们可以创建一个具有高度定制...
值得注意的是,`@Inheritance`注解只在继承层次的根类上是必需的。子类通常不需要这个注解,除非你想改变继承映射的实现方式。`strategy()`方法决定了继承映射的策略,这里使用`InheritanceType.SINGLE_TABLE`表示...
在这样的继承层次中,需要注意以下几点: 1. **访问修饰符**:派生类可以改变从基类继承的成员的访问控制。例如,基类的`private`成员在派生类中默认仍然是`private`,但可以被声明为`public`或`protected`。 2. *...
2. **简化对象模型**:通过使用虚继承,可以减少对象中的数据冗余,使得程序设计更加清晰简洁。 3. **提高可扩展性**:虚继承为程序员提供了更为灵活的继承方式,使得程序能够更好地适应未来的需求变化。 #### 七、...
在“类的继承练习”中,我们将深入探讨这个主题,学习如何定义和使用继承来构建复杂的软件结构。 1. **继承的概念**:继承的基本思想是一个子类可以继承一个或多个父类的属性和方法。父类提供了子类的基础结构,而...
在OC中,我们使用`@interface`关键字声明类,并使用`:`后跟父类的名字来表示继承。例如: ```objc @interface ChildClass : ParentClass // 子类的属性和方法声明 @end ``` 这里的`ChildClass`是子类,`...
**注意**:虽然C++支持多重继承,但在实际编程中应当谨慎使用。多重继承可能导致“菱形问题”等复杂度较高的问题,因此在设计类结构时需要格外小心。 #### 三、多态的含义与实现 **多态**是面向对象编程中另一个...
c++继承与派生习题答案 c++继承是面向对象编程(OOP)的一个基本概念,它允许一个类继承另一个类的成员变量和成员函数,...但需要注意的是,多继承时可能出现二义性问题,需要使用虚基类或作用域分辨符来消除该问题。
"C++类继承内存布局详解图" C++类继承内存布局是一种复杂的机制,涉及到类的继承、成员变量的访问、成员...C++类继承内存布局是一个复杂的机制,需要我们深入了解C++的语言特性和实现机制,以便更好地使用C++语言。
在覆盖方法时,需要注意以下几点: - 访问权限不能降低,即子类方法不能比父类被覆盖的方法更私有。 - 异常不能增加,子类方法抛出的异常不能比父类方法多。 - 静态方法不能被非静态方法覆盖,反之亦然。 - 可以使用...