Java学习第八节 之接口以及简单工厂方法
一、 抽象类
父类方法前加abstract即可把父类变成抽象类,但是父类的这些方法子类必须重写才可调用。
规则:1、不可以创建对象,即new对象;
2、子类继承抽象类必须重写抽象方法;
3、若子类不重写,则可以将其类也变成抽象类。
二、 接口,关键字是interface
1、接口即是一个规范,一个规则,里边全部都是抽象类。要求子类重写。
2、Java对比C++:C++是可以实现多重继承的,而java只能单一继承,一个类只能有一个父类,但是可以用接口实现多继承。
3、接口也是父类,但是只有声明。里边的方法要写public,即使不写也要默认为public,所有方法只能声明,不能实现。接口也可以声明常量。
4、需要实现接口方法,必须通过子类重写。实现关键字是implements.
注意:①接口和接口之间可以继承。
②一个类可以实现多个接口。
③声明接口,必须应用接口编程。
三、 equals和toString方法
1、equals是一个返回布尔值的方法,它对该类的两个方法进行比较,看它们是否满足“等于”的直观概念。
例如:date1.equals(date2)等价于date2.equals(date1),表示date1和date2中实例对象的比较,如果相同则返回true,否则返回false。
2、toString方法应返回一个代表主叫对象的字符串。如果一个类有一个toString方法,就可以使用该类的一个对象作为System.out.println和System.out.print方法的自变量,如果其要输出的不是String类型的话,就会自动调用toString()方法。
例如:System.out.println(date);等同于System.out.println(date.toString());它很容易让我们把一个对象输出到屏幕上。
3、instanceof是java、php的一个二元操作符(运算符),和==,>,<是同一类东西,也是java的保留关键字。它的作用是判断其左边对象是否为右边类的实例。它是通过返回个布尔值来指出。
例如:(说明A是一个定义好的对象类,a是一个变量,result是布尔类型)
result = ainstanceof A;
四、简单工厂法。
代码实现:
interface saler
{
public void sale();
public void back();
}
//飞机售票员1
class saler1 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//火车售票员2
class saler2 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//汽车售票员3
class saler3 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//新增高铁售票员4
class saler4 implements saler{
public void sale(){
System.out.println("sale");
}
public void back(){
System.out.println("back");
}
}
//工厂类
class factory{
static saler name(String type){
if(type.equals("plane")){
return new saler1();
}else if(type.equals("train")){
return new saler2();
}else if(type.equals("bus")){
return new saler3();
}else if(type.equals("高铁")){
return new saler4();
} else{
return null;
}
}
}
//主方法类
public class sale1{
public static void main(String[] args){
saler s=factory.name("plane");
s.sale();
s.back();
salers1=factory.name("train");
s1.sale();
s1.back();
salers2=factory.name("bus");
s2.sale();
s2.back();
salers3=factory.name("高铁");
s3.sale();
s3.back();
}
}