java基础学习笔记2
1.super关键字
就是可以在子类的方法中使用父类的方法。
但是要注意调用父类的方法不会影响子类的成员。
代码:
class FatherClass {
public int value;
public void f(){
value = 100;
System.out.println
("FatherClass.value="+value);
}
}
class ChildClass extends FatherClass {
public int value;
public void f() {
super.f();//重点在这里!!!!!!!!!!!
value = 200;
System.out.println
("ChildClass.value="+value);
System.out.println(value);
System.out.println(super.value);
}
}
public class TestInherit {
public static void main(String[] args) {
ChildClass cc = new ChildClass();
cc.f();
}
}
内存分析:
2.构造函数与继承–super
注意:
子类继承父类,想new个子类出来,需要调用子类构造函数,但又要调用父类构造函数,所以用super关键词调用父类构造函数。
如果不写super,默认调用父类参数为空的构造函数,如果父类没有空的构造函数,就报错。
例子:
package com.ufo.four;
class SuperClass {
private int n;
SuperClass() {
System.out.println("空父类");
}
SuperClass(int n) {
System.out.println("传参父类");
this.n = n;
}
}
class SubClass extends SuperClass {
private int n;
SubClass(int n) {
System.out.println("传参子类");
}
SubClass() {
super(300);
System.out.println("空子类");
}
}
public class TestSuperSub {
public static void main(String arg[]) {
SubClass sc1 = new SubClass();
SubClass sc2 = new SubClass(400);
}
}
3.object
可以去官网才下载doc文档,java.sun.com,下载后解压,双击index.html,打开网页,搜索关键词即可。
object是每个类都会继承的最基本的类。他不会extends object显示出来。
toString
里面有个toString方法,可以打印对象信息。如果不重写这个方法,默认返回classnname@hash编码,所以推荐重写这个方法。
equals
object有个equals方法,比较两个对象是否相等。
但是默认实现跟==没什么区别,所以不能直接使用obj.equals(anotherobj).
Person a=new Person(12,"zhnagsan");
Person b=new Person(12,"zhnagsan");
System.out.println(a.equals(b));//打印false
//如何让他变为true?在Person类里面重写equals方法:
@Override
public boolean equals(Object obj){
if (obj==null) {return false;}
else if(obj instanceof Teacher){
Teacher a=(Teacher) obj;
if(a.getZhiwei().equals(this.zhiwei)&&a.getName().equals(this.name)&&a.getAge()==this.age){
return true;
}
}
return false;
}
String Date等类,已经重写好了equals方法,所以
String a=new String("123");
String b=new String("123");
System.out.println(a.equals(b));//打印true
instanceof 是一个操作符
举例:if (obj instanceof Person)
判断obj这个对象是否是Person类的。
4.hashcode
一个对象独一无二的值