- 浏览: 202357 次
- 性别:
- 来自: 武汉
最新评论
-
minroseven:
[color=red][/color]个
[#0x0050] "Could not resolve placeholder"解决方案 -
JavaAiHaoZhezh:
character-set-server=utf8 可用!!! ...
[#0x004E] MySQL 5.5版本下my.ini内[mysqld]项中不能再写default-character-set=utf8 -
Jeremy__Pan:
哎哟,不错哦。解决了我的问题,不过是我拿maven 来构建的, ...
[#0x0050] "Could not resolve placeholder"解决方案 -
di1984HIT:
写的很好,真的很好。
[#0x004E] MySQL 5.5版本下my.ini内[mysqld]项中不能再写default-character-set=utf8 -
yousteely:
[client]default-character-set=u ...
[#0x004E] MySQL 5.5版本下my.ini内[mysqld]项中不能再写default-character-set=utf8
文章列表
[#0x0013] 局部内部类
- 博客分类:
- Java
如果把{}中的代码段称为“域”,那么方法body明显是一个域,方法body中的if {}或是for {}之类的也是域。在方法body或是方法body中其他域里定义的类就是局部内部类。
局部内部类只能在定义它的域中使用。且局部内部类的编译不受域执行与否的影响,即比如在if {}中定义了一个局部内部类,即使这个if不执行,这个局部内部类也照常编译。
- 2009-04-05 15:45
- 浏览 1091
- 评论(0)
先上代码:
class Outer
{
public class Inner
{
public String getInnerClassName()
{
return Inner.this.getClass().toString(); //'Inner' can be omitted here
}
public String getOuterClassName()
{
return Outer.this.getClass().toString(); //'Outer' CANNOT be omitted h ...
- 2009-04-05 02:18
- 浏览 4530
- 评论(0)
一个imp class可以同时实现多个interface,格式如下:
class Impl implements Intf1, Intf2, ..., IntfN;
如果一个class又有继承又有实现,那么应该先extends再implements,如:
class ImplExt extends Base implements Intf;
Java中不支持class的多重继承,但interface可以,如:
class Ext extends Base1, Base2, ..., BaseN; //syntax error
interface ExtI ...
- 2009-04-03 01:01
- 浏览 1331
- 评论(0)
[#0x0010] interface
- 博客分类:
- Java
我们大可将interface视为abstract class的延伸。
首先,interface默认具有abstract属性,所以你不能new一个interface。
其次,interface中的方法默认为public。由[#0x000E]
可知,如果一个imp class实现了一个interface(相当于一个ext class继承了一个base class),那么imp class中对interface中声明方法的实现(相当于是覆写方法)也必须是public。
再次,interface中的field默认为public + static + final,但不能为blank ...
[#0x000E] 关于覆写方法的访问权限
- 博客分类:
- Java
覆写方法的访问权限不得低于被覆写方法的访问权限(或者说覆写方法不能拥有比被覆写方法更严格的访问权限)。
public > protected > package (default) > private (private最严格,public最宽松)
abstract的真正含义是“阻止产生对象”(针对类)或是“禁止被对象所拥有”(针对方法,类似static)。 一个abstract class是不能产生object的。(P.S. 抽象类可以声明引用,不可实例化;类似在使用多态时,我们可以声明一个接口的引用,实际指向一个实现类对象) abstract function只有方法声明,没有方法body。 拥有abstract function的class必须声明为abstract class,否则会编译报错(abstract function不能被对象所拥有,那么包含该abstract function的class自然不能产生对象, ...
在[#0x0009]里面说过,“除了static方法和final方法(final包含private)外,Java对其他所有的方法都采用dynamic binding”(P151, Chapter 8, Thinking in Java, Fourth Edition),不过下面的这个例子也许会让人有点吃惊(adapted from Chapter 8, Thinking in Java, Fourth Edition):
//@file RTTI.java
//RTTI: Run-Time Type Identification
class Useful
{
public ...
- 2009-03-27 20:45
- 浏览 1391
- 评论(0)
先上代码(adapted from Chapter 8, Thinking in Java, Fourth Edition):
class Glyph
{
void draw()
{
System.out.println("Glyph.draw()");
}
Glyph()
{
System.out.println("Glyph constructor");
draw();
}
}
class RoundGlyph extends Glyph
{
private int radi ...
- 2009-03-27 15:46
- 浏览 1229
- 评论(0)
在[#0x0005]里面提到过,如果在base class中有一个可继承的方法,在ext class中添加一个同签名的方法则是覆写行为。其实,覆写对return type还是有要求的。
一般说来,覆写方法要求除了签名相同外,return type也要相同。
另外,Java SE 5新推出了“协变返回类型(covariant return type)”,即覆写方法的return type可以是被覆写方法return type的ext class,如:
class BaseReturnType
{
}
class ExtReturnType extends BaseReturnType ...
- 2009-03-27 14:39
- 浏览 1183
- 评论(0)
1. 向上转型(upcast) 一个ext class的object可以用base class的reference来指向,即ext class的object reference可以升级为base class的object reference。 如:Base b = new Ext();
2. 动态绑定(dynamic binding) 一般说来,将一个方法调用和一个方法主体关联起来叫做绑定。也可以理解为将方法名和方法body(方法代码段)关联起来叫做绑定。除了static方法和final方法(final包含private)外,Java对其他所有的方法都采用dynamic binding ...
- 2009-03-27 01:23
- 浏览 1176
- 评论(0)
class loading是一个比较复杂的过程。一般说来,类是在其static member被访问时被加载的。在加载时会做的一件事是:初始化static member和static代码段(static block, i.e. static {......}),当然,static是只会被执行only once的。
以下是 ...
- 2009-03-25 23:58
- 浏览 1292
- 评论(0)
[#0x0007] final
- 博客分类:
- Java
1. final data (基本数据类型)
相当于const
2. final reference
意味着该引用被绑定到一个具体对象,即该引用不能再指向另外一个对象。
但这个被指向的对象本身是可以发生变化的。
P.S.
final data和final reference必须在定义处或是构造器中初始化(注意:这里说的“必须在定义处或是构造器中初始化”指的是类的final member,即final成员。如果在方法中定义final data或final reference,则没有这个限制)。所谓blank final (我谓之dynamic ...
base class的private member是不可继承的(详细请参见[0x0004]),所以在ext class中也不会有这些member。
可以这样理解:ext class隐式包含一个base class,base class根据member的访问权限决定是否将member暴露给ext class。
不过ext class可以通过base class的非private getter来access这些private member。
package权限字段不可继承的理由同。
overload: 重载,指在同一个class中有多个同名function的现象。 override: 覆写,指ext class中重写base class中的同签名function的行为。 注意,如果ext class继承了base class——假设base class中一个非private非final的work(arg list 1)方法— ...
1. class的访问权限
class的访问权限只有public和package两种,不存在private和protected(内部类是特例)。 每一个编译单元(即.java文件)至多只能有一个public class,且如果有的话,该public class名必须与文件名相同。 class访问权限是member访问权限的基础。 2. member的访问权限
当一个class是可访问的时候,member的访问权限才有意义。 private、package、protected、public,具体的就不详细说了。 protected包含package权限。
...