注:在JAVA中,所有的类都直接或间接的继承java.lang.Object类。
public class Bird
{
private String name;
public Bird()
{
}
public Bird(String name)
{
this.name=name;
}
public void walk()
{
System.out.println("走路");
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}
}
public Chicken extends Bird
{
private String crest;//新增私有成员,鸡冠描述
public Chicken()
{
super();
}
public Chicken(String name,String crest)
{
super(name);
this.crest=crest;
}
//新增方法
public void setCrest(String crest)
{
this.crest=crest;
}
public getCrest()
{
return crest;
}
public void wu()
{
System.out.println("咕咕叫....");
}
}
看上面例子明白继承。在扩展一个类之后,可以一并初始化父类的构造函数,这个可以使用super()方法来达到。它表示调用基底类的构造函数。super()方法必须在构造函数一开始就调用,在子类的构造函数中,如果不用super()指定使用的父类的哪个构造函数来初始化,则会默认调用父类中无参数的构造函数。
2.Object类
在JAVA中只要使用class关键词定义类,就开始使用继承的机制。因为在JAVA中所有的对象都扩展自java.lang.Object类。Object类是JAVA程序中所有类的父类,每个类都直接或间接继承自Object类。
在JAVA中定义类时如果没有指定要继承的类,则自动继承Object类,上面的程序片段即等于如下定义类:
Public classFoo extends Object
{
//实现
}
注:可以把一些自定义的类的实例加入到Object类的集合中。
2.toString(),equals(),hashCode()方法
Object的toString()方法是对对象的文字描述,它会返回String实例.在定义对象之后可以重写toString()方法,为对象提供特定的文字描述,Object的toString()方法会默认返回类名称和16进制的编码,也就是返回以下的字符串:
getClass().getName()+’@’+Integer.toHexString(hashCode())
getClass()方法是Object中定义的方法,它会返回对象于执行时间的Class实例,再使用getName()方法来返回取得类的名称;hashCode()返回该物件的哈希码。
import java.util.Scanner;
public class ToStringDemo {
public String append(String i)
{
StringBuilder builder=new StringBuilder();
String str=builder.append(i).toString();
return str;
}
public static void main(String[] args)
{
ToStringDemo tsd=new ToStringDemo();
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要添加的字符串:");
String str1=scanner.next();
System.out.println("添加的字符串输出为:"+tsd.append(str1));
}
}
注:Object类的默认的equals()方法本身是比较对象内存地址是否相同。
3.clone()方法对象复制。具体看API
4.final关键词
Final关键词可以使用在变量声明时,表示该变量一旦被设置之后,就不可以再改变该变量的值。如:final double PI=3.1415926;
如果用final定义方法,表示该方法不能被子类重载(重写)。
如果在在声明类的时候定义了final,则表示该类不能扩展,就是不能用子类。