1: equals
2:内部类
总结:
1:equals
equals是Obejct类的一个方法, 比较两个对象是否相等, 如果有需要可以重写其方法。
public boolean equals(Object obj) //重写父类的equals方法 { if (!(obj instanceof Demo)) return false; Demo d = (Demo)obj; //多态的体现 return this.num == d.num; }
返回的类型是boolean类型的值 相等返回true 反之返回false
2:内部类
1):内部类可以访问外部类的成员和方法 包括私有的
之所以可以访问外部类的成员, 是因为内部类已经持有了外部类的一个引用,该格式为:外部类名.this.外部类成员名
public class InnerDemo { public static void main(String[] args) { Outer out = new Outer(); out.method(); } } class Outer { private int x = 3; void method() { new Inner().function(); } class Inner { int x = 5; void function() { int x = 9; System.out.println("inner:" + Outer.this.x); /*之所以可以直接访问外部类的成员,是因为内部类中已经持有了外部类的一个引用 该格式为 ——>外部类名.this*/ } } }
System.out.println("inner:" + Outer.this.x);// 运行结果为3
System.out.println("inner:" + x);//运行结果为9
System.out.println("inner:" + this.x);//运行结果为5
/*之所以可以直接访问外部类的成员,是因为内部类中已经持有了外部类的一个引用
该格式为 ——>外部类名.this*/
3):访问格式:
(1):当内部类定义在外部类的成员位置上,而且是非私有的,那么在外部其他类中,可以直接
建立内部类对象进行访问:
格式:
外部类名.内部类名 x = new 外部类对象名.内部类对象();
Outer.Inner x = new Outer().new Inner();
x.function();
4):当内部类是静态的时候
public class InnerDemo { public static void main(String[] args) { new Outer.Inner().function(); Outer.Inner in = new Outer.Inner(); in.function(); Outer.Inner.function(); } } class Outer { private static int x = 3; static class Inner //静态内部类 { static void function() { int x = 9; System.out.println("inner:" + x); } } }
如下:
class Outer { private static int x = 3; static class Inner //静态内部类 { static void function() { int x = 9; System.out.println("inner:" + x); } } static class Inner2 //此方法必须是静态的 { void show() { System.out.println("inner2 show"); } } public static void method() { //Inner.function(); new Inner2().show(); } }
public static void method() { new Inner2().show(); }
记录一下。。。