java学习总结——第八天

一、抽象类:

 

public abstract class A{                

   public abstract void method1();

   public abstract void method2();

   public abstract void method3();

}

public class B extends A{          //子类继承抽象类 必须重写所有抽象方法

   public void method1(){

      System.out.println("method1");

   }

   public void method2(){

      System.out.println("method2");

   }

   public void method3(){

      System.out.println("method3");

   }    

}

public abstract class C extends A{              //子类不重写 可以将你的类变成抽象类

   public abstract void method4();

}

public static void main(String[] s){//抽象类不可以创建对象 不能new A()

       A  a=new B();

       a.method1();

       a.method2();

       a.method3();

   }

}

抽象类分为两种 :

      普通抽象类  里面的方法不一定全部都是抽象的

        纯抽象类  里面的所有方法都是抽象方法

 

抽象方法必须abstract

Abstract类中的方法不一定都要是抽象方法。

 

二、接口

关键字:

声明:interface

实现:implement

 

1、接口是声明方法不实现。

2、接口与接口之间可以继承不能实现(重写);

3、一个类可以实现多个接口。

4、接口中的方法均为公有抽象的方法。

5、声明接口必须应用接口编程。

interface IA{

int a = 5; // 相当于 public static final int a = 5

void x();  //相当于public abstract void x();

}

interface IB{

void y();

}

class C implements IA,IB{

public void x(){

System.out.println("c.x()");

}

public void y(){

System.out.println("c.y()");

}

}

public class Interface {

public static void main(String [] s){

IA a = new C();

a.x();

IB b = new C();

b.y();

// IA.a=7; 错误,a是常量

}

}

三、简单 工厂模式

举个例子以快速明白Java中的简单工厂模式:


车站有售票员(接口)。三名:凤姐(类售飞机票)、春哥(类售火车票)、成龙(类售汽车票),三人有自己不同方式的售票和找钱的方法。

建立一简单工厂(类):

static 售票员 创建(String type){

if(type.equals("airplane")){
return new 凤姐2();
}else if(type.equals("car")){
return new 成龙();
}else if(type.equals("train")){
return new 春哥();
}else if(type.equals("high-speed rail")){
return new 李刚();
}else 
return null;

}

代码实现是只用传入参数(eg:“飞机”)我们直接可以利用简单工厂来返回接口类。


假如凤姐买票方式出现问题,我们不用去改凤姐的类,只需要用凤姐2号继承凤姐覆盖其卖票方法即可。

class 凤姐2 extends 凤姐{
public void change(){
System.out.println("凤姐2号找你的钱多");


增加一个售票窗口的话只需在工厂类增加一条选择代码即可。


如果需要成龙售票时唱歌,这是需要增加一个唱歌接口,让成龙继承。

class 成龙 implements conductor,sing


实现简单代码如下:

interface conductor{
void sell();
void change();
}
interface sing{
void song();
}
class 凤姐 implements conductor{
public void sell(){
System.out.println("凤姐只卖飞机票");
}
public void change(){
System.out.println("凤姐找你的钱");
}
}
class 凤姐2 extends 凤姐{
public void change(){
System.out.println("凤姐2号找你的钱多");
}
}
class 春哥 implements conductor{
public void sell(){
System.out.println("春哥只卖火车票");
}
public void change(){
System.out.println("春哥找你的钱");
}
}
class 成龙 implements conductor,sing{
public void sell(){
System.out.println("成龙只卖汽车票");
}
public void change(){
System.out.println("成龙大哥找你的钱");
}
public void song() {
System.out.println("美丽的神话");
}
}
class 李刚 implements conductor{
public void sell(){
System.out.println("李刚只卖高铁票");
}
public void change(){
System.out.println("刚哥找你的钱");
}
}
class Fanctor{
static conductor creat(String type){
if(type.equals("airplane")){
return new 凤姐2();
}else if(type.equals("car")){
return new 成龙();
}else if(type.equals("train")){
return new 春哥();
}else if(type.equals("high-speed rail")){
return new 李刚();
}else 
return null;
}
}
public class Test {
public static void main(String[] args){
conductor s = Fanctor.creat("airplane");
s.sell();
s.change();
sing c = (sing)s;
c.song();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值