Android开发_抽象类、接口

学习收获

不知不觉,Java学习已经俩个多星期了。收获有,但觉得不大,这几天学习的都说一些Java的知识,有理解的,也有懵比的,当然,懵比的时候比较多,这时候就只能听东哥代码跟着写罢了,很烦啊!不懂的的方还是不懂,这鸡儿难受。我们也太难了!牢骚到此,该说说今天的学习内容:Java接口还有抽象类实战

学习概况:

  • Java接口概念以及使用

  • 抽象类学习以及实战

  • 编写视图按钮窗口

过程

接口

  • 1.接口概念

interface 接口名{
// 静态常量,抽象方法
}
用于对象之间的通信

  • 2.接口的特点

(1)接口中只能放静态常量、抽象方法。

(2)java接口是对功能的扩展(父类和抽象类中一般都存放的是通用的属性和方法,我们一般把扩展的功能或特有的功能放到接口里,而不放在父类或抽象类中)。

(3)通过实现接口,java类可以实现多实现(一个类可以实现多个接口,即一个类可以有多种功能)。
(4)一个类只能继承一个父类,即extends关键字后面只能跟一个父类,但可以通过implements关键字实现,多个接口。

(5)接口与接口之间可以通过extends关键字来产生继承关系(即接口继承接口使用关键字extends)。

  • 3.接口与抽象类的区别

(1)抽象类与实现类之间是一种继承关系,也就是说如果采用抽象类的方式,则父类与子类在概念上应该是相同的。

(2)接口和实现类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,它可以使没有层次关系的类具有相同的行为。

(3)抽象类是对一组具有相同属性和行为的逻辑上有关系的事物的一种抽象,而接口是对一组具有相同属性和行为的逻辑上不相关的事物的一种抽象。

(4)对于接口和抽象类的选择,反映出设计人员看待问题的不同角度。抽象类用于一组相关的事物,表示的是"is-a"(继承)的关系,而接口用于一组不相关的事物,表示的是"like-a"(具备)的关系。

抽象类

昨天关于抽象类学习已经差不多了。
当你确定需要一个对象或者方法,但不清楚什么时候用到,但它确实是需要的,我们就可以定义抽象类完成。抽象类不能创建实例,它只能作为父类被继承。抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象。从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了子类的随意性。

  1. 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法,抽象类的方法只能在子类中完成
  2. 抽象类不能被实例化
  3. 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类

实战

今天御用抽象类和接口完成了一个界面。具体如下

  • 定义view类

/**
 * 管理视图显示事件监听
 * 什么情况下需要将一个父类做出成模板
 * 1.不能直接创建这个类的对象、
 * 2.这个类里面的某些方法 还不确定如何实现
 */
public class view {

    //所有的视图都共有属性
    String backgroundcolor;//背景色
    String bordcolor;//边框色
    //记录舰艇这个事件
    //展示不确定谁要监听
    //但是要监听世间的人肯定实现了这个接口
    OnclickListener Listener;


    //所有的视图都要监听事件
    //定义一个内部接口  封装
    public interface OnclickListener{
        //定义一套规范 约束外部使用这些额方法来监听事件
         void onClick(view v);
    }
    //模拟控件接收出没时间
    public void getTouchuEvent(){
        //调用监听这里面的Onclick方法
    System.out.println("被点击了");
    }
}
  • 定义Butten类

/**
 * 创建一个按钮类
 */
public class Butten extends  view{
   String title;
   String titlecolor;
    public Butten(String title,String titlecolor){
        this.title=title;
        this.titlecolor=titlecolor;
    }

}
  • 定义一个ImageView类

/**
 * 显示一张图片
 */
public class ImageView extends  view{
    String picture;
    public ImageView(String picture){
        this.picture=picture;
    }

}
  • 定义Activity类


/**
 * 管理界面的抽象类,顶贴以一个界面创建到结束的模板
 */
public  abstract class Activity {
    //保存这个界面的所有指示图
    public ArrayList<view> childs=new ArrayList<>();

    //界面创建
    public abstract void onCreate();
    //界面销毁
    public abstract void onDestory();
    //将子控件添加到当前界面上
    //接收的时候是用父类区接收子类
    //当需要访问子类内容是  就要羌之战换韦对应的类
    public void addChild(view v){
        if(v instanceof Butten){
            Butten btn=(Butten)v;
        System.out.println(btn.title+"按钮被添加到到界面上了");
        }
        if(v instanceof ImageView){
            ImageView iv=(ImageView)v;
            System.out.println(iv.picture+"的图片显示的图片");
        }
        //保存子控件
        childs.add(v);
    }
}
  • 最后是MainActivity类的代码


/**
 * 主界面
 */
public class MainActivity extends Activity{
    Butten btn;
    ImageView img;

    //构造方法
    public MainActivity(){
        //当界面被船舰,立即调用onCreate方法
        onCreate();
    }
    @Override
    public void onCreate(){
        //主界面如何布局
        //添加一个按钮
        Butten btn=new Butten("分享","红色");
        //添加一张图片
        ImageView img=new ImageView("周杰伦");

        //将创建的控件添加到当前界面
        addChild(btn);
        addChild(img);

        //1.
        //如果一个按钮需要监听事件  bane必须实现监听事件的接口
        //高数按钮谁在监听这个事件
        btn.Listener;
         //2.
        //
        img.Listener=new view.OnclickListener() {
            @Override
            public void onClick(view v) {
                System.out.println("图片被点击了");
            }
        };
    }
    //模拟触摸
    public void touch(){
        //将屏幕被触摸的事件传递给按钮
        btn.getTouchuEvent();
        img.getTouchuEvent();
    }
    @Override
    public void onDestory(){

    }

    public void onClick(view v){
        System.out.println("按钮点击了");
    }
}

结语

后面都好难啊,好多都是不太清楚的。先学一步是一步吧。到后面用多了就会明白吧

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容

  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,202评论 0 5
  • 一、抽象类 1、抽象类含义的概括: 当多个类出现相同功能时,但功能主体不同,这样可以向上抽取,抽取时只抽取功能定义...
    玉圣阅读 834评论 0 6
  • java继承 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继...
    863cda997e42阅读 666评论 0 1
  • 已经好长一段时间没有去大金新苑早市,所以刚走到这里卖豆腐的大嫂就喊我:“妹子,这段时间干嘛去了?怎么不见你的人呢。...
    孙永秀阅读 316评论 3 2
  • 今天牛人营开始拉群了,还没两个小时群里消息就接二连三炸了几千条,好好奇她们都是怎么这么多时间来聊天的。为什么时间管...
    希思诺阅读 296评论 0 0