Day05:
用 class 定义一个类,默认情况下 类从 Objcet 继承。
也可以用关键字 extends 指定父类。
java 的三种常用变量 : 类变量,实例变量,局部变量。
实例变量和局部变量几乎相同,主要区别在于实例变量在类中定义,局部变量在方法中定义。
实例变量:在类中,方法外定义声明,且没有被关键字 static 修饰的变量。
类变量 适用于整个类,适合用于在同一个类的不同对象之间的共享信息或者记录级别信息。
类变量:使用关键字 static 来声明类变量。
定义方法有4个基本部分:
方法名
参数列表(形参,实参)
方法返回的对象类型或者基本数据类型(返回值类型)
方法体
除非返回类型声明 void 否则方法执行完成后,将返回某种类型值。必须在方法出口点使用关键字 return 返回这个值。
关键字 this :引用当前的对象或者实例变量。
当引用变量时,java是从里面的作用域向外需找其定义。
类方法:可以被任何实例使用,也可以被其他类使用,调用时不需要实例,要用关键字 static 修饰。
实例方法:只能由实例对象调用。
每个 java 程序都有一个 main 方法,main方法是一个程序的入口,是一个类方法。
public 公共的
static 类方法
void 没有返回值
String[] args 接收一个String 类型数组
将类作为对象处理必须放在 main 方法中。
重载:方法名相同,方法的参数类型或者参数个数不一样。(方法返回值类型必须相同)
构造方法:在对象被创建(构造)时调用。
构造方法不能直接调用,使用 new 对象时,java会为对象分配内存,初始化对象的实例变量(赋初始值或者默认值),调用其中一个构造方法。
构造方法初始化对象。
构造方法:1.名称与类名相同 2.没有返回值类型 3.不能用 return 返回值
当类没有写构造方法时,系统会默认一个无参数的空构造方法,当重载这个构造方法后,这个无参数构造方法会消失。
重写(覆盖):子类根据需要对父类的方法进行重写,重写必须和被重写方法具有相同的方法名称,参数列表,返回值类型重写方法不能使用比被重写方法更严格的访问权限。
子类对象被 new 出来时会包含一个父类对象。
关键字 this :引用自身对象,this() 是在自己的构造方法中根据不同参数调用自身其他不同(重载)的构造方法。(this()只能在出现在构造方法中,而且必须出现在该构造方法中的第一句)
可以通过 this.方法名或者变量名,在该方法中调用自身类中的其他实例变量和实例方法。
关键字 super:对父类的引用,用法与 this 相同,只是 super 是对父类的引用。
super() 是在子类的构造方法中根据不同参数调用父类其他不同(重载)的构造方法。(super()只能在出现在子类构造方法中,而且必须出现在该子类构造方法中的第一句)
如果父类有一个无参数的构造方法,那么子类的构造方法中没有指定有参数的父类构造方法就会默认有一个super();,如果父类没有空参数的构造方法,子类就要在构造方法中指定父类的有参数构造方法。
可以通过 super.方法名或者变量名,在该方法中调用父类中的其他实例变量和实例方法。
结束方法:结束方法的功能几乎与构造方法相反。构造方法用于初始化,结束方法在对象被垃圾收集器删除以释放其占用的内存之前被调用
结束方法是 finalize() 。Objcet 类定义了一个默认的结束方法,该方法不执行任何操作。要为类创建结束方法,可以重写(覆盖)finalize()方法
结束方法内应指定要清理的对象,变量,将它们设定为 unll ,等待垃圾收集器清理,需要时可以调用父类的结束方法。
Object 类:所有类的根基类,object类的所有方法都可以被对象(数组)使用和重写(覆盖)
Object中的几个常用方法:
equals():
返回值类型:boolean
指示其它某个对象是否与这个对象相等。
equals()方法默认是比较两个对象是否是同一对象
== 比较的是两个对象的地址,检查是否是同一个对象
String,Date等类重写了equals() 方法,比较的是两个对象的值,检查内容
getClass() :
返回值类型:Class<?>
返回这个Object的运行类。
对象.getClass().getName();
获得对象所在类的类名。
getClass() 和 getName() 都是Object 类中定义的方法
toString() :
返回值类型:String
返回这个对象的字符串表现。
toString()方法默认返回对象名加上该对象的哈希码