Object类
先定义一个类Student
- java中所有类有共同的父类Object
- 有很多可以重写的方法例如:toString equals
- 在进行两个对象是否相等的比较中,如调用默认的equals方法,将进行hasCode等等的比较.这往往是我们所不需要的. 所以,我们要重写equals方法,给出指定比较方法,利于我们做比较判断
- toString方法也往往需要重写,可以给出我们需要的内容,而不是默认的给出hasCode值
public class student {
private int num;
private String name;
public student(int num, String name) {
//super();java中所有类有共同的父类Object
this.num = num;
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//Object类方法重写,hashcode方法也能重写
@Override
public String toString() {
return this.name+"的编号为:"+this.num;
}
@Override
public boolean equals(Object obj) {
student objStudent=(student)obj;
return this.name.equals(objStudent.name);
}
}
student s1=new student(1,"小黄");
student s2=new student(2,"小明");
System.out.println(s1.equals(s2));//测试重写的Object方法
System.out.println(s2.toString());
//若想让基本类型参与面向对象的开发,就需要包装类。包装类可以使基本数据处于类中,应用到面向对象中。
包装类
- valueOf方法用于将数值类型转化为对应的包装类
- xxxValue方法用于将包装类转化为对应基础类型
- parseXxx用于将字符串转化为对应包装类,这个是很常用的
public static void main(String[] args) {
//包装
Integer a=Integer.valueOf(10);
Integer a4=Integer.valueOf("12");
Integer a2=new Integer(66);//过时
Integer a3=new Integer("11");//过时的重载构造函数
System.out.println(a);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
//拆箱
int A=a.intValue();
System.out.println(A);
int B=Integer.parseInt("3");//将字符串转换数字
System.out.println(B);
String C=Integer.toString(B);//将数字转换成字符串
System.out.println(C+A);
}
接口
- 接口可以多继承,接口中只能声明常量和方法,起到一个指引的作用
- 在我看来:接口就是一种规则,让实现接口的人必须遵守这个规则
//面向接口编程,接口可以多继承,接口中只能声明常量和方法,起到一个指引的作用
public interface people {
final String say="我是人";
public void deo();
//不行public int uu;
}
class father implements people{
@Override
public void deo() {
System.out.println(say+"your father");
}
}
class mather implements people{
@Override
public void deo() {
System.out.println(say+"your mather");
}
}
//面向接口编程的优势
people p1=new father();
people p2=new mather();
p1.deo();//避免了对原方法的修改,直接用接口调用,面向接口编程
p2.deo();
有人说,接口中不能定义方法 这个很片面的,在后续的java版本中,可以用default关键字定义接口的默认实现方法.private关键字控制接口中的该方法为私有方法,用static关键字修饰接口的静态方法与静态变量,这个静态方法只能通过接口名调用
暂时能想起来的只有这么多了,可能还不是很全面.