- 浏览: 471728 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
Source_野驴:
...
jsp静态化和伪静态化 -
zidanzzg:
很好的知识,找到了利用异或交换数值的理论支持,谢谢分享
XOR的性质和运算 -
ueseu:
引用(2) DomainDomain域名也是Cookie的一部 ...
Cookie的组成 -
ueseu:
引用Secure取true或者false值。如果为true,那 ...
Cookie的组成 -
liqi___123:
理解得很透彻,谢谢!!
ROLAP、MOLAP和HOLAP联机分析处理区别
java构造函数 java类库的设计者们通过提供一种被称为构造函数的特殊方法,来保证每个对象都能得到初始化。Java在对象刚刚创建,用户还来不及得到的时候,自动调用构造函数。这样初始化就有保证了。 无参数的构造函数(默认的构造函数)用于创建“基本对象”,如果定义的类中没有定义构造函数,那么编译器会自动为你创建一个默认的构造函数。当类中定义了构造函数(不管带不带参数),编译器就不会再自动创建默认的构造函数了。 当你为同一个类撰写多个构造函数的时候,为避免重复,经常会在一个构造函数里调用另一个构造函数,你可以通过用this关键字来进行这种调用。但是只能调用一次,并且必须放在程序的最前面调用构造函数。 this关键字只能用于方法内部,它负责返回当前方法所在类的对象的reference。 一个子类的构造函数必须调用超类的构造函数,并且作为第一条语句。如果超类有可访问的无参数的构造函数(可以是程序员定义的或系统默认的无参数的构造函数),那么编译器会自动调用这个无参数的构造函数; 如果基类中没有默认的构造函数(也就是无参数的构造函数),或者你要调用的基类构造函数是带参数的,你就必须用super关键字以及合适的参数明确的调用基类的构造函数。 Class Alpha{ Alpha(int n){} } class Zeta extends Alpha{ Zeta(){ n=1;//错误,没有Alpha的构造函数被调用 } private int n; } 没有无参数的构造函数,所以Zeta的构造函数必须显示的调用Alpha的带参数的构造函数。正确代码为 class Zeta extends Alpha{ Zeta(){ Super(-1); //正确,Alpha的构造函数被调用 n=1; } private int n; } 在创建派生类对象的过程中,基类的构造函数总是先得到调用,这样一级一级的追溯上去,每个基类的构造函数都会被调用。因为构造函数有一个特殊的任务:它要知道对象是不是被正确地创建了。派生类只能访问他自己的成员,它看不到基类的成员(因为它们通常都是private的)。只有基类的构造函数才知道怎样初始化它的成员,同时也只有它才有权限进行初始化。因此“把所有的构造函数都调用一遍”就变得非常重要了,否则对象就没法创建了。这就是为什么编译器会强制每个派生类都要调用基类的构造函数的原因了。如果你不在派生类的构造函数里明确的调用基类的构造函数,那么编译器就会悄悄地调用那个默认的构造函数。如果没有默认构造函数,编译器就会报错。 java继承问题 class Parent { private void test() { System.out.print("private test"); } public static void main(String[] args) { Parent p=new Child(); p.test(); } } class Child extends Parent { public void test() { System.out.print("public test"); } } 输出结果为“private test“。 private方法对子类隐藏,因此Child类中的test()方法是一个全新的方法。 如果Parent类中定义的test()方法为非private,那么父类、子类的test方法声明相同,子类的方法重写了父类的方法,重写的结果就是覆盖了父类方法。 如果如果Parent类中定义的test()方法为非private,并且改写父类、子类中test方法的声明,使其参数类型有所区别,这样子类的方法重载了父类的方法。 package com; public class Cookie { public Cookie() { System.out.println("Cookie constructor"); } void foo() { System.out.println("foo"); } } import com.*; public class ChocolateChip extends Cookie { public ChocolateChip() { System.out.println( "ChocolateChip constructor"); } public static void main(String[] args) { ChocolateChip x = new ChocolateChip(); x.foo(); // 不能访问foo()方法。 } } 继承有一个有趣的特性,就是如果Cookie类里有一个foo()方法,那么所有继承Cookie的类里也都有foo()方法。但是foo()是package权限的,并且也在另一个package里面,因此我们没法用。 将Cookie改为如下代码后,能够访问foo()方法 package com; public class Cookie { public Cookie() { System.out.println("Cookie constructor"); } protected void foo() { System.out.println("foo"); } } 继承类除了能访问父类的public成员外,还可以访问父类的protected成员(但是不能访问private成员)。 同一个package里的其它类可以访问这个package的public、protected、package成员。 当你继承一个类时,你也创建了一个新的类,这个新的类不仅包含了已有类的所有成员(尽管private成员已经隐藏起来了,是不能访问的),更重要的是它复制了基类的接口。于是所有能够传给基类的消息也都可以传给派生类。 继承设计方面有一条通用准则:把基类的数据设成private,方法都设成public。 file 1 : Package p1; class Alpha{ public Alpha() {} } file 2: package p2; import p1.*; class Zeta{ Zeta(){ Alpha a=new Alpha();//错误 } } 虽然构造函数Alpha有一个公共作用域,但封装它的类只有包作用域。所以,构造函数只有在包p1中可见,封装类Alpha只在包p1中可见。 public class Parent { 这个例子,子类继承了父类的 addValue( int a, int b) 方法,就是说子类也有这个方法。 同时子类也声明了两个同名的方法 addValue( int a)和addValue( ),这两个方法则是子类从父类继承来的addValue( int a, int b)方法的重载。 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定。 1.如果子类从父类继承时使用的继承限定符是public,那么 2.如果子类从父类继承时使用的继承限定符是private,那么 3.如果子类从父类继承时使用的继承限定符是protected,那么
public int addValue( int a, int b) {
int s;
s = a+b;
return s;
}
}
class Child extends Parent {
public void addValue (){// do something...}
public int addValue( int a ){// do something...}
}
继承是子类和父类之间的关系,重载是同一类中的同名方法(参数不同)之间的关系。
(1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的protected成员成为子类的protected成员,只允许子类成员访问;
(1)父类的public成员成为子类的private成员,只允许子类成员访问;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的protected成员成为子类的private成员,只允许子类成员访问;
(1)父类的public成员成为子类的protected成员,只允许子类成员访问;
(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;
(3)父类的public成员成为子类的protected成员,只允许子类成员访问;
发表评论
-
java String.getBytes()编码问题 (讲到实处了)
2012-12-12 11:26 758转载自: String.getBytes()的问 ... -
JSP中文验证码
2012-05-14 17:18 1211以上两篇文章的内容介绍了有关JSP中产生数字验证码跟中文验证 ... -
One-Jar之旅
2011-09-16 10:06 1727One-Jar之旅 1 ... -
Javamail中的常见中文乱码问题与解决办法
2011-09-09 09:48 1569在使用javamail api开发邮件服务系统时,我们常常会碰 ... -
理解Java ClassLoader机制
2011-07-28 11:24 1343再次阅读这篇文章时,有了更深的体会,特转载之。 理解Ja ... -
JAVA泛型简介
2011-07-22 13:41 1187另篇:http://www.java3z.com/cwbweb ... -
BCEL和Javassist的介绍
2011-07-18 10:49 1533BCEL 介绍: Byte Code E ... -
类加载器特技:OSGi代码生成
2011-07-18 10:08 727转自:http://www.oschina.n ... -
开源的java编译器jikes
2011-06-19 08:50 2198今天才知道java编译器还有个jikes这样的开源产品。 ... -
java的沙盒机制
2011-01-28 18:03 2009JAVA 的安全模型不同于传统的安全方法,传统的安全方法中 ... -
filter的调用顺序
2011-01-06 11:54 1249在一个大型项目中往往有多个servlet过滤器,但是这些ser ... -
JAVA操作COOKIE
2010-12-28 11:32 12381.设置Cookie Cookie cookie = ... -
关于volatile变量的理解
2010-12-12 13:21 967前些日子在看些多线 ... -
Java可变参数方法重载的错误3例
2010-12-05 23:28 1079JDK1.5引进了方法的可变参数,受到许多开发人员的青睐。 ... -
JDK1.5新特性
2010-12-05 23:19 681"JDK1.5"的一个重要主题就是 ... -
序列化中serialVersionUID的使用
2010-12-04 08:39 1300先来看一个例子: 定义一个bean: Java代码 ... -
Java 语言的 XPath API
2010-12-02 15:31 921如果要告诉别人买一加仑牛奶,您会怎么说?“请去买一加仑牛 ... -
java -verbose命令
2010-09-23 15:00 9352java -verbose[:class|gc|jni ... -
db2的jdbc驱动
2010-09-20 18:34 1228type1:jdbc-odbc桥 ... -
Java代码编写的30条建议
2010-07-21 23:28 6021) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应 ...
相关推荐
8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8.java构造函数.zip8....
详细介绍了构造函数、复制构造函数、拷贝构造函数之间的区别
本程序包含构造函数和析构函数,可以把构造函数和析构函数的作用区分开
在Java中,构造函数的访问级别通常是public, 它提供了一个构造该类对象的接口。可是你知不知道,把构造函数的级别设为private, 有一些特别用处。
构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,传入参数为两个Point类实例。然后设计一个测试类...
每个类都具有构造函数和析构函数。其中,构造函数在定义对象时被调用,析构函数在对象释放时被调用。如果用户没有提供构造函数和析构函数,系统将提供默认的构造函数和析构函数。 1.构造函数 构造函数是一个与类同名...
创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数...
java中的构造代码块和构造函数.pdf
问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。 2. 从使用角度,虚函数主要用于在信息不全的情况下,能使...
c#析构构造函数c#析构构造函数c#析构构造函数c#析构构造函数
构造函数与默认构造函数的声明、定义、应用、比较
构造函数继承构造函数继承构造函数继承构造函数继承构造函数继承构造函数继承构造函数继承构造函数继承构造函数继承
构造函数和析构函数PPT课件.pptx
Java泛型构造函数(学习资料);Java泛型构造函数(学习资料);Java泛型构造函数(学习资料)Java泛型构造函数(学习资料);
java构造方法是java类中最重要的一个概念,这篇文档涵盖了,java对象初始化过程中构造器调用的顺序,及作用。
主要介绍了java构造函数示例(构造方法),需要的朋友可以参考下
C++\测试 对象成员构造函数、基类构造函数、派生类本身的构造函数 的先后顺序.rar
涵盖很多重点。我喜欢理论和实例一起整理,所以可以帮到你们。好好加油吧。我相信你看完的传的一个还回看下一个。。
默认构造函数和拷贝构造函数 析构函数 赋值函数(赋值运算符) 取值函数 **即使程序没定义任何成员,编译器也会插入以上的函数! 注意:构造函数可以被重载,可以多个,可以带参数;析构函数只有一个,不能被重载,...