07 java的object类和内部类, 匿名类和匿名对象

来源:互联网 发布:淘宝借钱逾期 编辑:程序博客网 时间:2024/06/06 02:24

在java里Object类是在所有类里的最底层的基类,如果一个类没继承另一个类,那编译器就会安排它继承Object类.

class Animal {  // ...}等价于:class Animal extends Object {    // ...}

在java里所有的类都是Object的派生类, 所以每一个类都具有Object的函数成员功能。其中Object类里有一个toString()函数,用于在被打印输出时触发调用.

 class Animal {      public String toString() {          return "no animal";    }}public class Hello {    public static void main(String[] args) {        Animal a = new Animal();        System.out.println(a); //会输出a.toString()函数返回的内容    }}

匿名类:
java类的函数成员可以在创建对象时,重写函数体. 这种作法是只针对一个对象来修改, 不是针对所类对象.
如: Human类里有一个walk函数成员, 在创建对象时重写函数体.

 Human h = new Human() {    public void walk() {        ...;    } };

final 关键字可用于声明只读的变量与只读的类(终态类);

final声明类表示此类的最终的状态只能是写好的样子, 不能再被继承扩展. 创建对象时也不可以修改函数成员.

    final class Hello {        public int num = 789;    }    // 则类Hello不能被继承,也不能在创建对象时重写函数成员

注意一个类可以声明为final或者abstract, 但是不能声明为final abstract.


内部类就是在一个类里定义另一个类,如在类Student里定义Lesson内部类:

class Student {    class Lesson { //内部类, 内部类不可以声明静态函数成员(方法)        public void lessonName() {            System.out.println("lesson name");        }    }}

当使用内部类创建对象需要通过顶级的类对象来创建, 如:

public class Main {    final class Hello { //内部类        public int num = 789;    }       public static void main(String[] args) {        Main m = new Main(); //创建顶层类对象        Main.Hello h = m.new Hello(); //通过顶层类对象来创建内部类对象        System.out.println(h.num);        //////////////////    //匿名对象就是指没有名字的对象。 如"new Student()"就是创建出一个没有名字的对象来直接调用.        Student.Lesson l = new Student().new Lesson();        l.lessonName();    }}
原创粉丝点击