jdbc3

 

Jdbc3知识要点(内部类)


一、   内部类定义:在一个类的内部声明的类


Ⅰ、内部类的作用:

①内部类可以访问外部类中的私有变量,使得外部创建该内部类后可以获得外部类私有属性信息

②在设计程序时,当一个程序依赖另个程序时,把依赖于的程序设为外部类,依赖的程序设为内部类。


Ⅱ、 内部类的字节码文件名形式:Outer$Inner.class,是机器自动产生的


Ⅲ、 内部类的使用:Outer.Inner inner = new Outer()newInner();此时导入Outer包即可

Outer o=new Outer();Inner inner=o.new Inner();此时导入Outer.Inner包


Ⅳ、注意:

内部类可以使用外部类变量

外部类可以使用私有内部类,当内部类变为private后也只能在外部类内创建内部类对象然后调用内部类方法,使用外部类时外部不知道内部类存在

内部类调用外部类属性当外部类属性名和内部类属性名相同时调用形式Outer.this.属性名(而调用本身这一属性形式this.属性名),不同时直接调用;

内部类调用外部类方法hi()或Outer.hi(),调用结果相同。

外部类中调用内部类方法:

 在外部类方法中 中调用 ,调用形式 Inner inner=new Inner();

                                                  Inner.sayHi();


结构如下:

************************************************************************************************************************

package yaoxia.jdbc3;


public class Outer {

private String name="rose";
public void hi(){
//外部类调用内部类
Inner inner=new Inner();
inner.name="lily";
inner.sayHi();

System.out.println("Hi!");
}


//内部类
public class Inner{
String name="alex";
public void sayHi(){
//内部类访问外部类中的私有变量name(引用外部类同名属性 )而静态属性使用:Outer。name
System.out.println("Hello!"+Outer.this.name);
System.out.println("Hello!"+this.name);//引用内部类与外部内同名属性
//内部类方法调用外部类方法
hi();
//=Outer.this.hi();两种调用结果同
}
}
}


*********************************************************************************************************************************

二、   静态内部类

Ⅰ、静态内部类对象创建方式:

Outer2.Inner2 inner=new Outer2.Inner2();


Ⅱ、注意:

在静态内部类调用外部类中方法、普通属性时外部类的普通属性和方法要用static来修饰,调用方法形式:Outer2.方法名;

调用外部类属性时,当外部类同内部类属性名相同时调用属性形式:Outer2.属性名,当属性名不同时直接用不用加Oter2.

结构如下:

************************************************************************************************************************************

package yaoxia.jdbc3;


public class Outer2 {
private static String name;

//静态内部类
public static class Inner2{
String name;
public void say(){
//调用外部类同名属性
System.out.println("static!"+Outer2.name);
}

}
}


*****************************************************************************************************************************


三、   系统的设计理念:回调函数(holk),回调函数OnLight依赖于外部类Gui,Gui不存在时,OnLight可以存在于一个类内,但其存在无意义。


结构如下:

***********************************************************************************************************************************

package yaoxia.jdbc3;


public class Button {

public void click(OnClickListener listener){
listener.onClick();
}
}

-----------------------------------------------------------------------------------------------------

package yaoxia.jdbc3;


public interface OnClickListener {
public void onClick();


}


------------------------------------------------------------------------------------------------------

package yaoxia.jdbc3;


public class Gui {

/*//接口指向实现类
OnClickListener bomb=new OnClickListener(){
@Override
public void onClick() {
System.out.println("Bomb!");
}
};*/


public void start(){

Button button=new Button();
button.click(new OpenLight());

Button button1=new Button();
button1.click(new Bom() );

}



private class OpenLight implements OnClickListener{


@Override
public void onClick() {
System.out.println("Turn on the lights!");
}

}

private class Bom implements OnClickListener{


@Override
public void onClick() {
System.out.println("Bomb!");
}

}

}


************************************************************************************************************************************


四、   局部内部类:定义在方法内,但该类不该写访问修饰符(private,public,protected),作用域在方法内.


作用:

解决一个复杂问题时,想创建一个类来辅助你的解决方案,但又不希望这个类被其他类调用时可以使用局部内部类

在方法内部实现一个接口,并返回对其的引用


注意:

Ⅰ、内部类在使用方法中其他变量时,变量要申明为final。

Ⅱ、局部内部类可调用外部方法,但局部内部类在外部类方法中不能被创建


结构如下:

************************************************************************************************************************************

package yaoxia.jdbc3;


public class Outer3 {

public void method(){
System.out.println("External method!");

}




public void content(){
//局部内部类
class Inner{

public void outPut(){
method();//局部内部类调用外部类中的方法

System.out.println("Local inner classes!");
}
}
//局部内部类对象的创建
Inner inner=new Inner();
inner.outPut();
}


************************************************************************************************************************************

五、   匿名局部内部类:没名的局部内部类,可实现接口指向实现类。

注意:接口一般情况下不能实例化,但当后面有大括号(里面实现了接口的所有方法)时可以new个对象,但表示的是它的实现类。


结构如下:

************************************************************************************************************************************

//匿名内部类继承了Object,重写了toString方法

public void method(){
Object obj=new Object(){

@Override
public String toString() {
return "Override the toString!";
}
};
System.out.println(obj);

}

---------------------------------------------------------------------------------

package yaoxia.jdbc3;


public class Gui {

//接口指向实现类
OnClickListener bomb=new OnClickListener(){
@Override
public void onClick() {
System.out.println("Bomb!");
}
};


public void start(){

Button button=new Button();
button.click(new OnClickListener(){


@Override
public void onClick() {
System.out.println("Turn on the lights!");
}
 
});

Button button1=new Button();
button1.click(bomb);

}

}

************************************************************************************************************************************



六、类的泛型:

 


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值