1.7 关于java的abstract修饰的抽象类和接口的讲解

抽象类模板,约束着子类必须有且需要重写的方法:

abstract class Beverage {
    // 模板方法(定义算法流程)    
    public final void prepare() {  
    // final 防止子类修改流程        
    boilWater();        
    brew();        
    pourInCup();        
    addCondiments();    
    }    
    // 公共步骤    
    private void boilWater() {        
    	System.out.println("烧开水");    
    }    
    private void pourInCup() {        
    	System.out.println("倒入杯子");    
    }    
    // 抽象步骤(子类必须实现)    
    protected abstract void brew();    
    protected abstract void addCondiments();
    }


	

冲咖啡奶茶类(子类):

class Coffee extends Beverage {    
	@Override    
	protected void brew() {        
		System.out.println("冲泡咖啡粉");    
	}    
	@Override    
	protected void addCondiments() {        
		System.out.println("加糖和牛奶");    
	}
}

冲茶叶类(子类):

class Tea extends Beverage {    
	@Override    
	protected void brew() {        
		System.out.println("浸泡茶叶");    
	}    
	@Override    
	protected void addCondiments() {        
		System.out.println("加柠檬");    
	}
}

需要注意的事项:

  1. 抽象类的实现很简单,只需要用abstract修饰类名即可。
  2. abstract修饰的方法是抽象方法,但是抽象方法只能存在于抽象类中。
  3. 抽象方法不写具体实现代码,留给子类按具体需要重写。
  4. 继承抽象类的子类也可以本身是抽象类,留给子类的子类重写抽象方法。
  5. abstract抽象类一般用于约束类的模板,提升写代码效率。

接口

接口和抽象类有点相似,但是接口是纯粹的约束,并且也解决了抽象类子类只能单继承的缺点。接口的实现类可以“继承”多个接口(implements A,B),在子类中重写接口中的方法。

接口的实例:(不是class关键字的类,而是interface关键字的接口)

package com.demo5;

public interface UserService {
    void add();
    void del();
    void  renew();
    void get();
}

在接口中的方法可以简写,默认是(public abstract)修饰
在接口中的属性,默认是(public static final)修饰

总结:面向接口编程是很重要的抽象思想。

接口的实例化采用多态的方式实现,例如
Jumping a = new Cat();
接口用interface修饰
接口的实现类用implements继承
接口的实例化可以用多态的方式,父类引用指向子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值