JavaSE06—类的其他问题
JavaSE06—类的其他问题
1. Object类
Object类是所有类的父类。如果一个类没有使用extends关键字明确表示继承另外一个类,那么这个类就默认继承Object类。
Object类的方法中有一个toString()方法。
2. 内部类
在类的内部也可以定义另一个类,如果类Outer的内部再定义一个类Inner,此时类Inner称为内部类。
内部类的使用举例:
class Outer{ int a = 35; void inst(){ Inner in = new Inner(); in.display(); } class Inner { void display() { System.out.println(a); } }}public class JavaTest{ public static void main(String[] args){ Outer out = new Outer(); out.inst(); }} 程序中内部类Inner可以直接调用外部类Outer中的a属性,如果把内部类拿到外面单独声明,那么在使用外部类中的a属性时,需要产生Outer类的对象,再由对象去调用Outer类的a属性。
注意:外部类是无法访问内部类的属性的。
在方法中也可以定义内部类:
class Outer{ int a = 5; void inst(){ class Inner { void display(){ System.out.println(a); } } Inner in = new Inner(); in.display(); }} 注意:在方法中定义的内部类只能访问方法中的final类型的局部变量,因为用final定义的局部变量相当于一个常量,它的声明周期抄出方法运行的生命周期。
3. 匿名内部类
interface A{ public void fun1();} class B{ int i = 10; public void get(A a){ a.fun1(); } public void test(){ this.get(new A(){ public void fun1(){ System.out.println(i); } }); }} 4. 匿名对象
匿名对象就是没有明确的声明的对象。
如下例:
class Person{ private String name = "张三"; private int age = 25; public String talk(){ return "我是:"+name+",今年"+age+"岁"; }}public class TestNoName{ public static void main(String[] args){ System.out.println(new Person().talk); }} 5. this关键字
this关键字强调对象本身,也就是调用该方法的对象。如下例:
class Person{ private String name; private int age; public Person(String name,int age){ this.name = name; this.age = age; }}