Android_开发_Day12_抽象类和接口
Android_开发Day12抽象类和接口
目的:
知道什么是抽象类,什么是接口,学会抽象类的使用,与接口的使用。
技术:
<1> 抽象类:抽象类也是一个类,但是该类有些特殊,它不提供方法的具体实现,而是提供一个模板,方法的具体实现是在它的子类中去实现的。
<2> 接口:定义一套方法,用与对象之间的通信。例如:你要到日本旅游,但是你不会说日语,他也不会说中文,因此你们想交 流就只能用英语,这里的英语就是接口。接口用interface开头,并且里面不能定义变量,只能定义常量,不能定义代码块和构造方法。接口里面不能添加普通方法,只有抽象方法。在接口里面定义方法时默认是public abstract的。如果非要定义已实现的方法使用default。接口里面的可以定义内部类,默认是public static。使用implements来实现接口。一个类只能继承一个父类,但一个接口可以被多个类实现。一个接口可以继承多个接口。接口之间也能实现多态。
技术如何使用:
我们可以模拟一下系统的ui控件以解决这个问题,因此首先我们需要一个界面,然后在界面上添加一些ui控件,比如button,picture等,因此该程序中用到的类有Button类和ImageView类,但是这两个类都有相同的东西,因此我们需要将这连个类继承于同一个类View,同理,在界面那一块,界面也分很多种,因此我们需要一个界面类MainActivity,同时又有该类继承于父类Activity,所以这样我们就可以写相应的代码了。
public abstract class Activity {
//
public ArrayList<View> ui = new ArrayList<>();
//
public abstract void onCreat();
public abstract void onDestory();
//将子控件添加到界面
public void addChild(View v){
if (v instanceof Button){
Button btn = (Button)v;
System.out.println(btn.title+"按钮被添加到界面上了");
}
if (v instanceof ImageView){
ImageView iv = (ImageView)v;
System.out.println(iv.picture+"图片显示到界面上了");
}
ui.add(v);
}
}
Activity类是一个抽象类
public class View {
String background;
String frameColor;
//记录谁像监听,暂时不知道
OnClickListener listener;
//定义内部接口
public interface OnClickListener{
//定义一套方法约束外部
void onClick(View v);
}
public void getTouchEvent(){
listener.onClick(this);
}
}
View类定义了一个内部接口
public class Button extends View{
String title;
String fontColor;
public Button(String title,String fontColor){
this.title = title;
this.fontColor = fontColor;
}
}
Button类
public class ImageView extends View{
String picture;
public ImageView(String picture){
this.picture = picture;
}
}
ImageView类
public class MainActivity extends Activity implements View.OnClickListener{
Button btn;
ImageView img;
public MainActivity(){
onCreat();
}
@Override
public void onCreat() {
btn = new Button("分享","红色");
img = new ImageView("御坂");
addChild(btn);
addChild(img);
//如果一个控件需要监听事件,那么就需要
btn.listener = this;//告诉按钮是谁要监听事件
//给图片添加一个事件
img.listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("图片被点击了");
}
};
}
public void touch(){
btn.getTouchEvent();
img.getTouchEvent();
}
@Override
public void onDestory() {
}
@Override
public void onClick(View v) {
System.out.println("按钮被点击了");
}
}
MainActivity类,是整个程序的核心。
接下来就是main函数的内容:
public class TestClass {
public static void main(String[] args){
MainActivity main = new MainActivity();
main.touch();
}
}
可以看见main函数的内容很少,主要的代码都到类当中去了。用touch方法来模拟点击事件。
实际使用效果:
批注 2019-08-12 185415.jpg总结:
接口是可以沟通两个类的,通过一个类调用另一个类,再通过另一个类的接口回调这个类,就完成了一次交流,这个和现实中的人与人之间的沟通交流是一样的,你想我传话,我收到后会返回一句话给你。