《java笔记分析和总结.docx》由会员分享,可在线阅读,更多相关《java笔记分析和总结.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、l.java中super的两种用法通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量。但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的。好了,现在开始讨论this&super这两个关键字的意义和用法。在Java中,this通常指当前对象,super那么指父类的。当你想要引用当前对象的某种东西,比方当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个构造函数,这些马上就
2、要讨论。如果你想引用父类的某种东西,那么非super莫属。由于this与super有如此相似的一些特性和与生俱来的某种关系,所以我们在这一块儿来讨论, 希望能帮助你区分和掌握它们两个。在一般方法中最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某个成员,使用方法是this.成员名,而不带this的那个便是形参。另外,还可以用this方法名 来引用当前对象的某个方法,但这时this就不是必须的了,你可以直接用方法名来访问那个方法,编译器会知道你要调用的是那一个。下面的代码演示了上面的用法:publiccl
3、assDemoThis privateStringname; privateintage;DemoThis(StringnameJntage) setName(name);你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的setAge(age);this.print();brpublicvoidsetName(Stringname) this.name=name; 此处必须指明你要引用成员变量)publicvoidetAge(intage) this.age=age;publicvoidprint() System.out.println(Name=,
4、 + name4-ge=+age);在此行中并不需要用this ,因为没有会导致混淆的东西)publicstaticvoidmain(Stringargs) DemoThisdt=newDemo This(,Kevin,/22);这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(), 你完全可以用print。来代替它,两者效果一样。下面我们修改这个程序,来演示super的用法。classPerson publicint c; privateStringname; privateintage;protectedvoidsetName(Stringname) th
5、is.name= name;)protectedvoidsetAge(intage) th is.age=age;)protectedvoidprint() System.out.pnntln(Name= + name+ Age=+age);)publicclassDemoSuperextendsPerson publi cvoidprint() System.out.println(DemoSupe r:); super.printQ;publicstaticvoidmain(Stringargs) DemoSuperds=newDemoSuper(); ds.setName(kevin);
6、ds.setAge(22); ds.print();)在DemoSuper中,重新定义的print方法覆写了父类的print方法,它首先做一些自己的事情,然后调用父类的那个被覆写了的方法。输出结果说明了这一点: DemoSuper:Name=kevinAge=22这样的使用方法是比拟常用的。另外如果父类的成员可以被子类访问, 那你可以像使用this 一样使用它,用super.父类中的成员名的方式,但常常你并不是这样来访问父类中的成员名的。在构造函数中构造函数是一种特殊的方法,在对象初始化的时候自动调用。在构造函数中,this和super也有上面说的种种使用方式,并且它还有特殊的地方,请看下面的
7、例子:classPersonpublicstaticvoidprt(Strings) Syst em.out.println(s);)Person() prt(APerson.);Person(Stringname) prt(nApers onnameis: + name);)publicclassChineseextendsPerson Chinese( )(super();/调用父类构造函数(1)prt(Achinese.);/(4)Chinese(Stringname)super(name);调用父类具有相同形参的构造函数(2 ) prt(hisnameis: + name);)Chin
8、ese(Stringname,intage)this(name);调用当前具有相同形参的构造函数(3 ) prt(hisageis:+age);)publicstaticvoidmain(Stringargs) Chinesecn = ne wChinese(); cn = newChinese(kevin);cn=newChinese(kevinz22);)在这段程序中,this和super不再是像以前那样用.连接一个方法或成员,而是直接在其后跟上适当的参数,因此它的意义也就有了变化。super后加参数的是用来调用父类中具有相同形式的 构造函数,如1和2处。this后加参数那么调用的是当前具
9、有相同参数的构造函数,如3处。当然,在 Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比方4处,你 可以将它替换为this.prt(因为它继承了父类中的那个方法)或者是super.prt(因为它 是父类中的方法且可被子类访问),它照样可以正确运行。但这样似乎就有点画蛇添足的味道 了。最后,写了这么多,如果你能对this通常指代当前对象,super通常指代父类这句话牢记在 心,那么本篇便到达了目的,其它的你自会在以后的编程实践当中慢慢体会、掌握。另外关于本 篇中提到的继承,请参阅相关Java教程。2.全局变量.全局变量也称为外部变量,它是在函数外部定义
10、的变量。它不属于哪一个函数,它属于一个源程序文件。 其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。只有在函数内经过说明的全 局变量才能使用。全局变量的说明符为externo 但在一个函数之前定义的全局变量,在该函数内使用 可不再加以说明。例如:inta,b;/*外部变量*/ voidflQ/* 函 数 fl*/)floatx,y;/* 外部变量*/ intfzQ/* 函数 fz*/*全局变量x,y作用域全局变量a,b作用域*/从上例可以看出a、b、x、y都是在函数外部定义的外部变量,都是全局变量。但x,y定义在函数fl之后, 而在fl内又无对x,y的说明,所以它们在fl内无
11、效。azb定义在源程序最前面,因此在fl,f2及main 内不加说明也可使用。全局变量是使用相同的内存块在整个类中存储一个值.1 .public class Test private String name;成员变量,也是全局变量public void changeName() String n 二tomoyci”;n 就是局部变量 name = n;)总的来说,定义在类里的,也就是nome那个位置,就是成员变量,在JAVA里全局变量和成员变量是 一个意思。定义在方法里或域里就叫做局部变量,所谓域就是里面,比方public void show()int b = 2;局部变量if(true) i
12、ntci = l;局部变量)这个位置访问。,无效)这个位置,或其他方法里访问b ,无效他的作用范围:局部变量离开了他的域就无效成员变量的范围依赖他的访问修饰符,什么是访问修饰符呢?publicprotectedprivate默认,你定义时不给他访问修饰符就是默认至于他们的范围,请自行查资料,不动脑筋是不行滴这种东西确实如1 L所说的,再烂的书也会有介绍2 .全局函数全局函数就是可以被其他文件中函数调用,比方一个大型程序,由很多人来共同编写,每个人写的程序为一 个文件,全局函数就可以被另一个文件中的程序调用,声明函数时不管写没写extern都默认为全局函数,如果 不想被其他人调用,可以用stat
13、ic来定义,就只能被本文件程序调用全局函数是定义在类外的函数,成员函数就是定义在类中的函数。java图形用户界面的几种布局简单的介绍最正确答案第一种:FlowLayout这种就是一个挨着一个的排,它会随着窗口的大小而不停的变换各个组件的位置;第二种:BorderLayout这种就是分个东南西北中,中最大,如果没在东南西北的任何方向添加组件,中将占据其位置,这应该现在java的默认布局第三中:GridLayout这种嘛,就是几行几列的表格,这种布局的好处就是很组件的位置会分配的很对称均匀还有其它的什么卡片啊,这些都不常用;:实在要用布局,一般都是嵌套着用,那样整个界面都会更加的合理,准确,美观,
14、但就是很麻烦1 :现在java你可以用可视化编程,下载一些可视化编程的插件,就不用考虑这些布局了。这样不是更方 便,你说呢?java, awtjava.awt包,即java抽象窗口工具包(AbstractWindowToolkit,AWT)提供了许多用来设计GUI(Graphicsllserlnterface,图形用户界面)组件类。java早期进行用户界面设计时,主要是用java.awt 包提供的类。如Button(按钮)、TextField(文本框)和List例表)等。JDK1.2推出之后,增加了一个新的 javax.swing包,该包提供了功能更为强大的用来设计GUI的类。在JAVA的JP
15、anel中,怎么添加一个图片继承 JPanel, 重写 paintComponent(Graphicsg)方法例子:class P extendsJPanel Overrid e protected void paintComponent(Graphics g) super.paintComponent(g);Image image = null;try ( image ImageIO.read(ClassLoader.getSystemResource( hello.gif); catch (lOException e) e.printStackTraceQ;) g.drawlmage(im
16、age, 1,1,400,300, null);)后造方法构造方法是一种特殊的方法,与一般的方法不同是:1 .构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。2 .构造方法的调用是在创立一个对象时使用new操作进行的。构造方法的作用是初始化对象。3. 不能被static. finaL synchronized, abstract和native修饰。构造方法不能被子类继承。 classRectConstructordoublelength;doublewidth;doublearea() return I ength*width;)下面这个方法就是所谓的构造方法,没有返回值,方法名与类名相同 RectConstructor(double width,double length)/ 带参数的构造方法 this.length = length;this.width=width;)其实构造方法就是为了给类中成员赋初值构造函数重载在Java中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ),这个过程称为方法重载methodoverloading )o