接口和抽象类:
实现多继承;数据成员(抽象类可以有自己数据成员,可以有非abstract的成员方法;接口中数据成员是static final的,所有方法都是abstract的);方法实现(抽象类中可以有方法实现,接口中不能有实现方法);变量(抽象类变量默认friendly实现类可以重新定义、重新赋值;接口中变量是public static final的,且要赋值,故实现类不能重新定义、重新赋值)。
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
2.在abstract class 中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法(不能有方法体)。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。 7.接口中的方法默认都是 public,abstract 类型的。
多线程实现的两种方法:
A. 继承Thread类
class Thread1 extends Thread{
public void run(){}
}
public class Ex{
public static void main(String[] args){
Thread1 t1=new Thread();
t1.start();
}
}
B.实现Runnable接口
class Runnable1 implements Runnable{
public void run(){}
}
Public class Ex{
Public static void main(String[] args){
Thread r1=new Thread(new Runnable1();)
r1.start();
}
}
equals和==的区别:
equals()方法是用来检测两个对象的内容是否相等/
而==的比较分两种:一种是比较基本数据类型,例如int,那么比较的就是基本数据类型的值;
如果比较的是对象,例如String,那么比较的是两个句柄是否指向内存中的同一个对象。