1)interface 接口
介绍
interface是定义接口时使用的关键字
语法 : interface 接口名 { }
接口的出现,解决了java中单继承导致的功能变弱问题
接口中只有常量,没有变量,由public static final修饰且可以省略不写
接口中没有构造方法,不能创建对象,但是可以发生多态
一个类只能继承于一个类,但是可以实现多个接口,多个接口之间用逗号分隔
接口和接口之间可以多继承
接口的使用
public static void main(String[] args) {
Bullet bullet1 = new Bullet();
bullet1.fly();
bullet1.attack();
}
}
interface Flyable{ //接口:可以飞
int MIN_SPEED = 0;
double MAX_SPEED = 7.9;
void fly();
}
interface Attackable{ //接口:可以造成伤害
void attack();
}
class Plane implements Flyable{ //飞机实现了可以飞的接口
public void fly(){
System.out.println("飞机可以飞~~~");
}
}
class Kite implements Flyable{ //风筝实现了可以飞的接口
public void fly(){
System.out.println("风筝可以飞~~~");
}
}
class Bullet implements Flyable,Attackable{ //子弹实现了可以飞和可以造成伤害的接口
public void fly(){
System.out.println("子弹可以飞~~~");
}
public void attack(){
System.out.println("子弹可以造成伤害~~~");
}
}
class Ballon implements Flyable{ //气球实现了可以飞的接口
public void fly(){
System.out.println("气球可以飞~~~");
}
}
总结
当抽象类和接口都可以完成某个需求时,优先使用接口
使用接口的目的:保留该子类的类继承关系
2)Object类
Object类是根类 如果一个类没有显示继承 则它继承于Object类
所有的类都直接或间接的继承于Object类 所以Object类中的方法 在其他类中也有
1.equals方法
== : 比较基本类型时,比较的是它们值是否相同
比较引用类型时,比较的是它们的地址是否相同
equals方法 : 比较两个对象是否相同
但Object类中的equals方法默认比较内存地址 所以需要对equals方法进行重写
关于重写equals方法
public static void main(String[] args) {
Student s1 = new Student(10001, "西撒");
Student s2 = new Student(10001, "西撒");
}
}
class Student{
int id;
String name;
public Student (int id,String name){
this.id = id;
this.name = name;
}
public boolean equals(Object obj){
//如果id和name都相同 则这组信息表示的是同一个人
//this是s1 obj是s2
if(this == obj) //先比较内存地址 如果地址相同 则直接返回true
return true;
if(obj instanceof Student){ //否则,判断obj是否是Student的实例
Student s = (Student) obj;
if(this.id == s.id && this.name == s.name)
return true;
}
return false;
}
关于字符串的比较
public static void main(String[] args) {
String name1 = "艾伦耶格尔";
String name2 = "艾伦耶格尔";
String name3 = "迪奥布兰度";
System.out.println(name1.equals(name2)); //true
System.out.println(name1.equals(name3)); //false
}
2.finalize方法
finalize方法是在垃圾回收时自动调用的
所谓垃圾,就是一个对象在没有任何引用可以找到它时,就会被视为垃圾数据
3.toString方法
toString表示对象的字符串表示形式
toString方法常用来进行字符串的描述
例如
public static void main(String[] args) {
Customer c1 = new Customer("布加拉提", '男', 28, "意大利", 8848.00);
Customer c2 = new Customer("乔尼乔斯达", '男', 25, "美国", 10101.50);
System.out.println(c1.toString());
System.out.println(c2.toString());
}
}
class Customer{
private String name;
private char sex;
private int age;
private String address;
private double account;
public Customer(String name, char sex, int age, String address,double account) {
super();
this.name = name;
this.sex = sex;
this.age = age;
this.address = address;
this.account = account;
}
@Override
public String toString() {
return "Customer [name=" + name + ", sex=" + sex + ", age=" + age
+ ", address=" + address + ", account=" + account + "]";
}
输出结果为
Customer [name=布加拉提, sex=男, age=28, address=意大利, account=8848.0]
Customer [name=乔尼乔斯达, sex=男, age=25, address=美国, account=10101.5]