面向对象-Object对象、匿名内部类

Object类:

在java中,有一个类是所有类的父类,这个类就是Object类,如果一个类没有明确的指定父类是谁,那么他的父类就是Object类。

如下两种代码表示的含义都是一样的:
class Person extends Object{

}

class Person{

}

那么既然继承了Object类,Object类有哪些作用呢?实际上Object类提供了很多的方法,这些方法经常被开发者所使用,Object类中的主要方法如下所示:

NO. 方法名称 类型 描述
1 public Object() 构造 构造方法
2 public boolean equals(Object obj) 普通 比较对象
3 public int hashCode() 普通 取得 Hash码
4 public String toString() 普通 对象打印时调用
常用方法:

toString方法:

在我们输出一个对象的时候,如果我们没有明确指定是否调用toString方法,那么默认会自动调用toString方法。

toString方法实际上是对一个对象的字符串形式的输出。

以后我们想要输出一个对象的信息,使用toString方法即可。

Object是所有类的父类,那么所有的类型都可以向上转型转变为Object类型,包括抽象类与接口。

本章要点

  • 1.继承可以扩充已有类的功能,通过extends关键字实现,可将父类的成员(包含数据成员与方法)继承到子类。

  • 2.Java在执行子类的构造方法前会先调用父类中的无参的构造方法,其目的是为了对继承自父类的成员做初始化操作。

  • 3.父类有多个构造方法时,如果调用特定的构造方法,则可在子类的构造方法中通过super()关键字类实现。

  • 4.this()用于在同一类内调用其他的构造方法,而super()则用于从子类的构造方法中调用其父类的构造方法。

  • 5.使用this调用属性或方法时会先从本类中查找,如果本类中没有查找到,再从父类中查找,而使用super则会直接在父类中查找需要的属性或方法。

  • 6.this()与super()的相似之处在于

    (1)当构造方法有重载时,两个均会根据所给予的参数的类型与个数正确的执行相对应的构造方法。

(2)l两者均必须定义在构造方法内的首行,也正是这个原因,this()与super()无法同时存在于用一个构造方法内。

  • 7.重载是指在相同类内定义名称相同但是参数个数或类型不同的方法,因此,java可依据参数的个数或类型调用相应的方法。

  • 8.覆写是在子类当中定义名称、参数个数与类型均与父类相同的方法,用以覆写父类中的方法

  • 9.如果父类中的方法不希望被子类覆写,可在父类的方法前加上final关键字,这样该方法就不会被覆写。

  • 10.final的另一个功能是把它加在数据成员变量前,这样该变量就变成一个常量,因此便无法在程序代码中再修改了。使用public static final 可以声明一个全局常量。

  • 11.所有的类均继承自Object类。一个好的类应该覆写Object类中的toString()、equals()、hashCode()3个方法,所有的引用数据类型都可以想Object进行向上转型。

  • 12.Java可以创建抽象类,专门用来当做父类。抽象类的作用相当于模板,其目的是依据其格式来修改并创建新的类。

  • 13.抽象类的方法可分为两种,一种是一般方法,另一种是以abstract关键字开头的抽象方法。抽象方法并没有定义方法体,而是要保留给由抽象类派生出的新类来定义。

  • 14.抽象类不能直接来产生对象,必须通过对象的多态性进行实例化操作。

  • 15.接口是方法和全局常量的集合,接口必须被子类实现,一个接口可以同时继承多个接口,一个子类可以同时实现多个接口。

  • 16.Java并不允许类的多重继承,但是允许实现多个接口。

  • 17.接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口;派生出的接口称为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可加入新的成员以满足实际的需要。

  • 18java对象的多态性分为向上转型和向下转型。

  • 19.通过instanceof关键字可以判断对象属于哪个类。

  • 20.匿名内部类的作用是利用内部类创建不具有名称的对象,并利用它访问类中的成员。

原文地址:https://www.cnblogs.com/SunMoonSky/p/12370769.html