本章知识点:
Obiect类,所有子类的父类。
Object类的概念、匿名内部类、匿名对象、类的使用方法、
数据类型的传递
接口对象以及关键字的使用。
----一.Obiect
Object类中的方法适用于所有类。
代码案例:
package day11;
public class ObjectTest {
public static void main(String[] args) {
Person p = new Person();
System.out.print(p);//相当于=实际上去调用 p.toString();
}
}
class Person extends Object{
String name = "五月天";
int age = 35;
/*覆盖Object类的toString()方法*/
public String toString(){
return "name="+name+"\n"+"age="+age;
}
}
运行结果:
name=五月天
age=35
二、内部类
内部类可声明成public或private。
当内部类声明成public或private时,对其访问的限制与成员变量和成员方法。
代码案例:
package day11;
public class InnerTest {
public static void main(String[] args) {
Outer o = new Outer();
o.displayO();
}
}
class Outer {
int m = 50;
void displayO() {
Inner i = new Inner();
i.displayI();
}
class Inner {
void displayI() {
System.out.println( "内部类="+m);
}
}
}
运行结果:
内部类=50
案例总结:
由于使用了内部类操作,所以程序在调用score属性的时候减少了创建对象的操作,从而省去了一部分的内存开销。
但是内部类在声明时,会破坏程序的结构,因此在开发中往往不建议使用。
星期五, 十一月 13, 2015 14:26:54
继续内部类
----2.1
用static可以声明属性或方法,而用static也可以声明内部类,
用static声明的内部类---->则变成了外部类,
但是用static声明的内部类不能访问非static的外部类属性。
----2.2在类外部引用内部类
内部类也可以通过创建对象从外部类之外被调用,
只要将内部类声明为public。
代码案例:
package day11;
public class InnerTest {
public static void main(String[] args) {
Outer o = new Outer();
/*o.talik2();*/
Outer.Innner i = o.new Innner();//用外部类的对象去实例化了一个内部类的对象。
i.talk2();
}
}
class Outer {
String s = "DOODER";
void talik2(){
Innner n = new Innner();
n.talk2();
}
public class Innner{ //用public声明一个内部类,此内部类可被外部类访问
void talk2() {
System.out.println(s);
}
}
}
运行结果:
DOODER
2.3.在方法中定义内部类
代码案例:
package day11;
public class InnerTest {
public static void main(String[] args) {
Outer o = new Outer();//创建一个外部类,访问外部类的方法
o.talik1();
}
}
class Outer {
String s = "DOODER";
void talik1(){
class Inner { //在外部类的方法内建立内部类
void talk2() {
System.out.print("外部类的s="+s);
}
}
Inner i = new Inner();//在外部类中创建一个内部类对象,执行内部类的方法
i.talk2();
}
}
运行结果:
外部类的s=DOODER
2.3.1 在方法中定义的内部类只能访问方法中的final类型的局部变量,
因为用final定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期。
代码案例:
package day11;
public class InnerTest {
public static void main(String[] args) {
Outer o = new Outer();//创建一个外部类,访问外部类的方法
o.talik1(5);
}
}
class Outer {
int score = 95;
void talik1(final int s){
final int temp = 20; //在方法中定义的内部类只能访问方法中的final类型的局部变量=常量
class Inner { //在外部类的方法内建立内部类
void talk2() {
System.out.print("final案例值为 = "+(score+s+temp));
}
}
Inner i = new Inner();//在外部类中创建一个内部类对象,执行内部类的方法
i.talk2();
}
}
运行结果:
final案例值为 = 120
2.4匿名内部类
----2.4.1匿名内部类实际上也是可以继承一个抽象类或实现一个接口。
代码案例:
package day11;
public class InnerTest {
public static void main(String[] args) {
B b = new B();
/*b.test();*/ //
b.tt();
}
}
/*定义一个接口: 验证内部类可以实现接口*/
interface A {
public void fun1();
}
/*外部类B,get()、test(方法;
* 内部类C实现A接口,并实现抽象方法*/
class B {
int c =10;
class C implements A {
public void fun1() {
// TODO Auto-generated method stub
System.out.print("类c="+c);
}
}
/*用tt()方法进行直接new内部类对象,调用内部类中的方法*/
public void tt(){
C th = new C();
th.fun1();
}
/*第一种使用两个方法,test()进行new内部类对象,get()进行调用内部类方法。*/
/*public void get(A c){
c.fun1();
}
public void test(){
this.get(new C());
}*/
}
运行结果:
类c=10
P209 从入门到精通
上面的案例引入--->匿名内部类
2.4.1匿名内部类必须去继承一个父类或是实现一个接口。
代码案例:
package day11;
public class InnerTest {
public static void main(String[] args) {
B b = new B();
b.test();
}
}
/*本例:
* 匿名内部类的实现。
* 注意点:
* 1.定义一个匿名内部类时去继承一个父类或是实现一个接口所有的抽象方法
* 2.匿名内部类不能构造函数
* 3.不能存在静态成员变量或静态成员方法*/
interface A {
public void fun1();
}
class B {
int c = 355;
public void get(A c){
c.fun1();
}
public void test(){
this.get(new A(){ //匿名内部类实现的A接口
public void fun1(){
System.out.println("匿名内部类="+c);
}
}
);
}
}
运行结果:
匿名内部类=355
详见blog :http://www.cnblogs.com/chenssy/p/3390871.html
----2.4.1匿名对象
只使用一次的对象,没有任何一个具体的对象名称引用
代码案例:
package day11;
public class InnerTest {
public static void main(String[] args) {
new Person().talk(); //直接创建一个匿名对象进行调用类的方法
}
}
/*本例:
* 匿名对象:
* method(A a)
* 方法1:A a =new A(); method (a);
* 方法2:method (new A());
*方法2中new A()就是一个匿名对象.
*/
class Person {
private String name = "waoo";
private int age = 23;
void talk() {
System.out.print("名称="+name+"\n"+"年龄="+age);
}
}
运行结果:
名称=waoo
年龄=23
用new Person()声明的对象并没有赋给任何一个Person类对象的引用,
所以此对象只使用了一次,之后会被Java的垃圾收集器回收。
----2.4.2方法
方法可以简化程序的结构,也可以节省编写相同程序代码的时间--->达到程序模块化的目的。
方法格式:
返回值类型 方法名称(类型 参数1,类型 参数2) {
程序语句;
return 表达式;
}
代码案例:
显示19个星号,换行之后再输出“I Like Java”这个字符串,最后再输出19个星号。
在public static void tt(){}加了static,这是因为main()方法本身也声明成static,
而在static方法内只能访问到static成员变量(包括数据成员和成员方法)。
代码案例:
package day12;
public class ObjectTest {
public static void main(String[] args) {
tt();
}
/*在static方法内只能访问到static成员变量(包括数据成员和成员方法*/
public static void tt() {
for(int i =0 ; i< 9;i++) {
System.out.print("*");
}
System.out.print("\n");
System.out.println("I Like Java");
for(int i = 0;i < 9;i++) {
System.out.print("*");
}
}
}
运行结果:
*********
I Like Java
*********
----2.4.3方法的参数与返回值
星期五, 十一月 13, 2015 17:53:11
相关推荐
其次,Flexible Microarray data analysis using Mayday poster_bioperspectives.pdf是一个关于Mayday在微阵列数据分析方面的专题海报,它可能突出以下几个方面: 1. **微阵列数据分析**:介绍Mayday在处理微阵列...
人形机器人感知硬件专题研究 一、人形机器人的五类感官 人形机器人感知硬件是指机器人感知外部环境并对其进行处理和分析的能力。人形机器人的五类感官分别是: 1. 视觉感官:通过摄像头、深度摄像头、激光雷达等...
Day14的Shortest_Path_4是关于最短路径算法的研究,可能涵盖了Dijkstra算法、Floyd-Warshall算法或Bellman-Ford算法等,这些都是求解图中两点间最短路径的关键工具。 Day18的DP3_5继续深化动态规划的应用,可能探讨...
第 1 部分拟研究技术专题 1.1《黑客攻防实战——web 漏洞挖掘与利用》图书 1.2 安天实战课题研究 2017 年第二期内网渗透技术题目 1.3 关于安天 365 线下和线下交流 1.4 已出版图书 第 2 部分技术研究文章 2.1 最新...
这类句型用于评估某一现象或技术对日常生活的影响,适用于科技评论或社会学研究。 ### 句子类型十:数据解读 #### 经典句型: 10. 根据图表中的数字/统计数据/百分比,我们可以看到...。显然...,但为什么会这样?...
慧聪国际的现代企业管理高层经理研究生(慧聪国际 EDP)班项目实施方案是一个全面的教育管理计划,旨在为高级管理人员提供最新的管理理论和实践知识,提升他们的业务领导力。这个项目不仅关注招生过程,还包括了学前...
在高中英语的二轮复习中,情态动词是一个常见的专题,因为它们在各种考试,如高考中频繁出现。下面我们将通过分析一些高考真题来深入理解和运用情态动词。 1. 题目中的"can/could"可以表示可能性或能力,如第一题:...
当先行词为研究(a study),在从句中作主语时,使用`that`或`which`,如:"Two of the authors of the review also made a study published in 2014 that/which showed a mere five to 10 minutes a day of running...
- **智库笔记**:定期发布关于AI领导力的研究报告和实践指南。 - **专题社区**:围绕不同主题设立社区,促进成员之间的交流与合作。 - **案例分享**:收集并分享AI技术在不同领域应用的成功案例。 ### 三、专题社区...
被动语态用于强调动作的承受者而非执行者,通常在描述客观事实、科学研究或者事件的结果时使用。以下是对被动语态的详细讲解: 1. **被动语态的构成** 被动语态由两部分组成:助动词 "be" 和及物动词的过去分词。...
这为研究者和学生提供了能够及时掌握全球0day资讯的渠道。 7. 丛书编辑:由Stefano Berretti、Sabu M. Thampi和Praveen Ranjan Srivastava担任编辑。他们均为智能系统领域内的专家,其工作对于该领域的研究和教育...
例如,"It was after the war was over that Einstein was able to come back to his research work again." 这句话强调了战争结束对爱因斯坦回归研究工作的影响。强调句中,当强调主语时,注意保持主谓一致。例如:...
人脸识别技术的发展与应用在信息安全领域中日益受到重视,尤其是在企业安全、APT(高级持续性威胁)、0day漏洞以及XSS跨站脚本攻击的防护方面。随着技术的进步和大数据的崛起,人脸识别作为一种生物特征识别技术,在...
12. "Tom has useful book. book is very interesting." "a useful book"泛指一本有用的书,"useful"以辅音音素开头,用"a"。第二句中的"the book"特指前文提到的那本书。答案:B. a; The 总结冠词使用规则: - ...
"WCDMA业务介绍"是关于Wideband CDMA(宽带码分多址)的专题,这是3G中最广泛采用的标准之一。WCDMA允许更高的数据速率,能够支持高质量的语音、数据和多媒体服务。其工作原理是通过扩频技术,在同一频段内同时传输...
例如题目中的"I believe that an apple a day keeps the doctor away."中,"apple"以元音音素开头,因此用"an"。 2. 定冠词"the"的使用:定冠词"the"用来特指某一事物。例如在问句"Are you going to the football ...
例如,"the next day"指的是特定的第二天,而"a two-year period"表示泛指的一段时间。 2. 名词的单复数: 名词可以有单数和复数形式,如"period"和"periods"。复数形式通常通过在词尾添加-s或-es来形成,但一些不...
8. 计算机和技术:单词表中出现了多个计算机和技术相关的词汇,例如computer(电脑)、workbook(练习册)、project(专题研究)等。 9. 生活和日常:单词表中涉及到生活和日常的多个方面,例如eat(吃)、sleep...