王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、异常捕获

packagecom.pb.demo.demo1;publicclassDemo {publicstaticvoidmain(String[] args) {try{

func();

System.out.PRintln("A");

}catch(Exception e) {//e.printStackTrace();System.out.println("C");

}

System.out.println("D");

}/*** 抛出异常

*@throwsException*/publicstaticvoidfunc()throwsException{try{thrownewException();

}finally{

System.out.println("B");

}

}

}

结果:B,C,D

二、对象的实例化过程

packagecom.pb.demo.demo2;publicclassTest {publicTest(){

System.out.println("Test");

}

}packagecom.pb.demo.demo2;/*** 继承父类test

*@authorAdministrator

**/publicclassDemoextendsTest {publicDemo(){//这里隐藏了super()System.out.println("Demo");

}publicstaticvoidmain(String[] args) {newDemo();newTest();

}

}

结果:

Test

Demo

Test

三、接口packagecom.pb.demo.demo2;publicinterfaceA {

}packagecom.pb.demo.demo2;publicclassBimplementsA {publicString func(){return"func";

}publicstaticvoidmain(String[] args) {

A a=newB();

a.func();//编译失败,因为A接口中并没有这个方法}

}

四、方法重写packagecom.pb.demo.demo3;publicclassFu {publicbooleanshow(chara){

System.out.println(a);returntrue;

}

}packagecom.pb.demo.demo3;publicclassDemoextendsFu {/*** 重写父类的方法

* 调用时会调用子类重写后的方法*/publicbooleanshow(chara){

System.out.println(a);returnfalse;

}publicstaticvoidmain(String[] args) {inti=0;

Fu f=newDemo();

Demo d=newDemo();for(f.show('A');f.show('B')&&(i<2);f.show('C')){

i++;

d.show('D');

}//结果:A,B,}

}

结果;A,B

五、接口packagecom.pb.demo.demo4;publicinterfaceA {

}packagecom.pb.demo.demo4;publicclassBimplementsA {publicString test(){return"yes";

}

}packagecom.pb.demo.demo4;publicclassDemo {staticA get(){returnnewB();

}publicstaticvoidmain(String[] args) {

A a=Demo.get();

System.out.println(a.test());//编译失败 接口中没有这个方法,这个方法是子类中特有的}

}

六、对象初始化packagecom.pb.demo.demo5;publicclassSuper {inti=0;publicSuper(String a){

System.out.println("A");

i=1;

}publicSuper(){

System.out.println("B");

i+=2;

}

}packagecom.pb.demo.demo5;publicclassDemoextendsSuper {publicDemo(String a){

System.out.println("C");

i=5;

}publicstaticvoidmain(String[] args) {inti=4;

Super d=newDemo("A");

System.out.println(d.i);

}//B,C,5}

结果:B,C,5

七、匿名内部类的使用packagecom.pb.demo.demo6;publicinterfaceInter {publicvoidshow(inta,intb);publicvoidfunc();

}packagecom.pb.demo.demo6;publicclassDemo {publicstaticvoidmain(String[] args) {//补足代码,调用两个函数,用匿名内部类实现Inter inter =newInter() {

@Overridepublicvoidshow(inta,intb) {

}

@Overridepublicvoidfunc() {

}

};

inter.show(3, 5);

inter.func();

}

}

八、packagecom.pb.demo.demo7;publicclassTD {inty = 6;classInner {staticfinalinty = 3;//内部类中如果有static成员,这个内部类必须是static的,voidshow() {

System.out.println(y);//只能调用局部中final修饰的}

}

}packagecom.pb.demo.demo7;publicclassTC {publicstaticvoidmain(String[] args) {

TD.Inner ti=newTD().newInner();

ti.show();//3}

}

非静态内部类,不能定义静态成员,

内部类如果有静态成员,则这个内部类必须是静态内部类

九、方法重写和方法重载publicclassDemo {intshow(inta,intb){return0;

}

}/*** 下列哪里方法可以存在Demo的子类中*/publicintshow(inta,intb){return0;

}//可以方法重写privateintshow(inta,intb){return0;

}//权限不够privateintshow(inta,longb){return0;

}//可以,和父类不是同一个方法,方法重载publicshortshow(inta,intb){return0;

}//不可以,不是方法重载,不可以和给定的函数出现在同一类中,或者其子类publicstaticintshow(inta,intb){return0;

}//不可以,静态方法,只能覆盖静态

十、this,finalthis:代表本类对象,哪个对象调用this所有的函数,this就代表哪个对象

final:

1.修饰类,变量(成员变量,静态变量,局部变量),函数

2.修饰的类不可以被继承

3.修饰的函数不可以被重写

4.修饰的变量是一个常量,只能赋值一次

5.内部类只能访问局部中的final变量

十一、继承对象初始化packagecom.pb.demo.demo8;publicclassFu {intnum=4;voidshow(){

System.out.println("show Fu");

}

}packagecom.pb.demo.demo8;publicclassZiextendsFu {intnum=5;voidshow(){

System.out.println("show Zi");

}

}packagecom.pb.demo.demo8;publicclassT {publicstaticvoidmain(String[] args) {

Fu f=newZi();

Zi z=newZi();

System.out.println(f.num);//4System.out.println(z.num);//5f.show();//方法已经重写,执行子类的方法z.show();

}

}

结果:

4

5

show Zi

show Zi

十二、接口的实现packagecom.pb.demo.demo8;publicinterfaceA {voidshow();

}packagecom.pb.demo.demo8;publicinterfaceB {voidadd(inta,intb);

}packagecom.pb.demo.demo7;importcom.pb.demo.demo8.A;importcom.pb.demo.demo8.B;publicclassCimplementsA,B{privateintx;privateinty;//private int sum;@Overridepublicvoidadd(inta,intb) {this.x=a;this.y=b;//sum=a+b;}

@Overridepublicvoidshow() {

System.out.println(x+y);//System.out.println(sum);}publicstaticvoidmain(String[] args) {

C c=newC();

c.add(4, 2);

c.show();//通过函数打印以上2个数的和}

}

十三、异常执行packagecom.pb.demo.demo8;publicclassDemo {publicstaticvoidmain(String[] args) {try{

showExce();

System.out.println("A");

}catch(Exception e) {

System.out.println("B");

}finally{

System.out.println("C");

}

System.out.println("D");//B,C,D}publicstaticvoidshowExce()throwsException{thrownewException();

}

}

结果:B,C,D

十四、继承,子类重写父类packagecom.pb.demo.demo8;publicclassSuper {inti=0;

Super(){

};publicSuper(String s){

i=1;

}

}packagecom.pb.demo.demo8;publicclassDemo1extendsSuper {publicDemo1(String s){

i=2;

}publicstaticvoidmain(String[] args) {

Demo1 d=newDemo1("yes");

System.out.println(d.i);//2}

}

结果:2

十五、方法重写

packagecom.pb.demo.demo9;publicclassSuper {publicintget(){return4;

}

}packagecom.pb.demo.demo9;publicclassDemo1extendsSuper {publiclongget(){//方法重写不能改变返回值类型和参数return4;

}publicstaticvoidmain(String[] args) {

Super s=newDemo1();

System.out.println(s.get());

}

}

结果:编译失败:方法重写不能改变方法的返回值 和参数

十六、异常

packagecom.day10.demo2;publicclassDemo {publicstaticvoidmain(String[] args) {try{

func();

}catch(Exception e) {

System.out.println("C");

}

System.out.println("D");

}publicstaticvoidfunc(){try{thrownewException();

System.out.println("A");//抛出异常下方代码不会被执行}catch(Exception e) {

System.out.println("B");

}

}

}

结果:throw下方的代码不能被执行到

删除后,执行结果:B,D

十七、匿名内部类

packagecom.day10.demo2;publicclassDemo1 {publicvoidfunc(){//位置1:}publicstaticvoidmain(String[] args) {

Demo d=newDemo();//位置2}/*** A、在位置1写new Inner(); //OK

* B、在位置2写new Inner(); //主函数是静态的,如果要访问,需要被静态包修

* C、在位置2写new d.Inner();//格式错误 new new Demo1().Inner();

* D、在位置2写new Demo.Inner(); //错误因为inner不是静态的*/}

结果

十八、多重catch顺序

packagecom.day10.demo2;publicclassExc0extendsException {

}packagecom.day10.demo2;publicclassDemo2 {publicstaticvoidmain(String[] args) {try{thrownewExc1();

}catch(Exception e) {

System.out.println("Exception");/** Exception是最大的异常父类,

* 在最前面的后,下面的catch永远不会被执行到*/}catch(Exc0 e) {

System.out.println("Exc0");

}

}

}

结果:在最前面的后,下面的catch永远不会被执行到,父类的catch要放在最下面

十九、静态调用非静态,匿名内部类实现

packagecom.day10.demo2;publicinterfaceTest {publicvoidfunc();

}

packagecom.day10.demo2;publicclassDemo3 {publicvoidshow(Test t){

t.func();

}publicstaticvoidmain(String[] args) {//补足代码:匿名内部类newDemo3().show(newTest(){

@Overridepublicvoidfunc() {

}

});

}

}

二十、异常带return

packagecom.day10.demo3;publicclassTest {publicstaticString output="";publicstaticvoidfoo(inti){try{if(i==1)thrownewException();

output+="1";

}catch(Exception e) {

output+="2";return;

}finally{

output+="3";

}

output+="4";

}publicstaticvoidmain(String[] args) {

foo(0);

System.out.println(output);//1,3,4foo(1);

System.out.println(output);//134,2,3}

}

结果

二十一、补全代码对象数组求最大值

packagecom.day10.demo3;publicclassCircle {privatestaticdoublepi=3.14;privatedoubleradius;//半径publicCircle(doubler){this.radius=r;

}publicstaticdoublecompare(Circle[] cir){//程序代码,就是求数组中的最大值intmax=0;for(intx=1;x<cir.length;x++){if(cir[x].getRadius()>cir[max].radius){

max=x;

}

}returncir[max].getRadius();

}publicdoublegetRadius() {returnradius;

}publicvoidsetRadius(doubleradius) {this.radius =radius;

}

}packagecom.day10.demo3;publicclassTC {publicstaticvoidmain(String[] args) {

Circle cir[]=newCircle[3];//创建了个类类型的数组cir[0]=newCircle(2.0);

cir[1]=newCircle(3.0);

cir[2]=newCircle(5.0);

System.out.println("最大半径值是:"+Circle.compare(cir));

}

}

二十二、方法调用

packagecom.day10.demo3;publicclassDemo {privatestaticintj = 0;privatestaticbooleanmethodB(intk) {

j+=k;returntrue;

}publicstaticvoidmethodA(inti) {booleanb;

b= i < 10 | methodB(4);

b= i < 10 ||methodB(8);

}publicstaticvoidmain(String[] args) {

methodA(0);

System.out.println(j);

}

}

结果:4

二十三、对象中值的比较

packagecom.day10.demo4;publicclassCircle {privatedoubleradius;publicCircle(doubler){this.radius=r;

}publicCircle compare(Circle cir){//补足代码if(this.radius>cir.getRadius()){returnthis;

}else{returncir;

}//return (this.radius>cir.getRadius()?this:cir);}publicdoublegetRadius() {returnradius;

}publicvoidsetRadius(doubleradius) {this.radius =radius;

}

}packagecom.day10.demo4;publicclassTC {publicstaticvoidmain(String[] args) {

Circle cir1=newCircle(1.0);

Circle cir2=newCircle(2.0);

Circle cir;

cir=cir1.compare(cir2);if(cir1==cir){

System.out.println("圆1的半径比较大");

}else{

System.out.println("圆2的半径比较大");

}

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航