Java基础知识(3)

来源:互联网 发布:西安电子科技大学网络教育 编辑:程序博客网 时间:2024/06/09 02:15

写日志一是想巩固知识,二是想把自己常忘记的不懂的在弄懂。

1 toString

将对象转为字符串形式, 这个方法是在Object类中定义的, 默认转为"类名@地址", 如果不想转为这种形式, 可以重写这个方法.在使用System.out.println()和System.out.print()方法打印一个对象的时候, 默认会调用对象的toString()方法

2组合设计模式

         2.1.什么时候用组合设计模式

                   当一个类中使用另一个类的方法时, 就可以使用组合

         2.2.怎么写组合设计模式

                   定义一个要组合的类类型的成员变量

                   通过构造函数接收一个该类的对象

                   在需要使用该类方法的时候,通过成员变量来调用

                   如:

                            Class  Preson{

                                     Private  Card card;

                                     Public  person(Card card){

                                                        This.card=card;

                                     }

                                     。。。。。。。

                            }

                            创建对象时传入参数就OK

         2.3.组合设计模式和继承的区别

                   组合设计模式不占用继承位置(没有明显继承关系)

                   继承时子类可以当作父类来用(可根据不同的对象进行调用)

3.类中的内部类

         3.1.什么是内部类

                   在类中定义的类就是内部类,内部类是外部类的一个成员, 必须创建外部类对象才能使用.

                   内部类名为"外部类名.内部类名"

         3.2.创建内部类对象

                  

                   Outerouter = new Outer();   Outer.Inner inner= outer.new Inner();

         3.3.内部类的使用

                   当我们定义一个类的时候, 希望别人在创建这个类对象之前先创建另一个类的对象, 就可以把这个类定义到指定类的内部.

                   如果我们希望定义的类能访问另一个类的成员, 就可以定义一个指定类的内部类.

                   在内部类中使用"外部类名.this.成员名"形式可以访问外部类的成员

                   注意: 外部类中不能访问内部类成员

         3.4.不能定义静态成员

                   因为静态本意就是不创建对象可以直接使用, 而内部类需要创建外部类对象才能用. 矛盾

                  

4.方法中的内部类

         4.1.什么是方法中的内部类

                   一个类如果只在某个方法中使用, 那么就可以定义为方法中的内部类

         4.2.方法中的内部类的使用

                   在方法中直接使用类名创建对象, 例如: Inner inner = new Inner();

                   创建对象的代码必须在声明类的代码下面.

                   在方法中的内部类也可以访问外部类中的成员, 和类中的内部类一样, 都是使用"外部类名.this.成员名"

         4.3.访问局部变量问题

                   在方法中的内部类中访问方法中的局部变量时, 这个变量必须是final的

                   因为局部变量在方法运行结束之后生命周期就结束了, 而内部类对象的生命周期还有可能没结束, 为了能访问到这个变量, 需要加上final.

                   例如,方法中返回内部类,内部类还活着所以应该加上final

5.匿名内部类

         5.1.什么是匿名内部类

                   如果一个类只使用一次, 那么就可以定义为匿名内部类.

                   定义方式: new 父类名(){类定义}.

                   这样做声明了一个指定类的子类, 然后用这个类创建了一个对象

                   匿名内部类也是方法中内部类的一种, 访问局部变量, 需要final

                  

 


0 0