精华内容
下载资源
问答
  • 在实际项目中,可能很多的代码需要服用,这样的话就要求我们把公共的部分抽象出来,Vue中可以使用mixin把公用的代码抽象出来 Mixin模式,混合模式。这是一种不用继承就可以复用的技术。主要还是为了解决多重继承的...

    在实际项目中,可能很多的代码需要服用,这样的话就要求我们把公共的部分抽象出来,Vue中可以使用mixin把公用的代码抽象出来

    Mixin模式,混合模式。这是一种不用继承就可以复用的技术。主要还是为了解决多重继承的问题。多继承的继承路径是个问题。
    JS是基于对象的,类和对象都是对象模板。
    混合mixin,指的是将一个对象的全部或者部分拷贝到另一个对象上去。其实就是属性了。
    可以将多个类或对象混合成一个类或对象。
    
    

    1、创建名字为mixin的文件夹,用来写一些公共的方法

    在src目录下创建 mixin的路径,用来放我们公共的代码
    2、在mixin目录下创建Common.js,添加一下代码

    export default {
      methods: {
        getUserToken: function ( ) {
          return {
            user_id: 1,
            token: '123456'
          }
        }
      }
    }
    

    3、在其他的vue文件中引用该文件

    <script>
    import Common from "../mixin/Common";
    </script>
    

    4、在js代码中添加mixins,中括号代表数组,引入多个文件 逗号隔开即可

    import Common from "../mixin/Common";
    export default {
      name: 'demo',
      mixins: [ Common ],
      data () {
      },
      methods: {
      },
      mounted() {
        console.log( this.getUserToken() )
        this.getGoodsList(1);
      }
    }
    </script>
    

    调用commonjs中的方法,直接使用 this.方法名即可。

    展开全文
  • 比如根据id查询,删除,查询分页,查询全部信息,保存···这些可变性不大的方法,全部抽象成一个公共的父类方法,新增类只需要继承这个方法就可以了,不用再每次单独的去实现这些方法,如果有源码可以参考那就太...
  • 当我们构建多个物体的时候,假如它们有共同性,提出公共方法抽象类(至少有一个抽象方法) import org.jbox2d.dynamics.Body; import org.liky.angrybird.util.Globals; import org.liky.angrybird....

    今天学习如何实现愤怒的小鸟,用到了JBox2D构建物理世界(这个不是这篇文章重点,但是很谢谢这个开源玩意)

    一般一个独立的物体的实体类

    import org.jbox2d.dynamics.Body;
    import org.liky.angrybird.util.Globals;
    import org.liky.angrybird.util.ImageUtils;


    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.graphics.Point;


    public class Bird {


    private Body body;


    private float r;
    private int type;


    public Bird(int type) {
    switch (type) {
    case 1:
    r = Globals.PIECE_WIDTH / 2;
    break;
    }
    this.type = type;
    }


    public void draw(Canvas canvas, Paint paint, Point nowPosition) {
    canvas.save();


    canvas.rotate((float) (body.getAngle() * 180 / Math.PI),
    body.getPosition().x * Globals.RATE + nowPosition.x,
    body.getPosition().y * Globals.RATE + nowPosition.y);


    canvas.drawBitmap(ImageUtils.getBirdImg(type), body.getPosition().x
    * Globals.RATE - r + nowPosition.x, body.getPosition().y
    * Globals.RATE - r + nowPosition.y, paint);


    if (Globals.birdCenterFlag) {
    // 保证正在飞行的鸟的坐标在屏幕正中
    nowPosition.x = (int) -(body.getPosition().x * Globals.RATE - Globals.SCREEN_WIDTH / 2);
    nowPosition.y = (int) -(body.getPosition().y * Globals.RATE - Globals.SCREEN_HEIGHT / 2);


    if (nowPosition.x > 0) {
    nowPosition.x = 0;
    }
    if (nowPosition.y > 0) {
    nowPosition.y = 0;
    }
    if (nowPosition.x < -Globals.SCREEN_WIDTH) {
    nowPosition.x = -Globals.SCREEN_WIDTH;
    }
    if (nowPosition.y < -Globals.SCREEN_HEIGHT) {
    nowPosition.y = -Globals.SCREEN_HEIGHT;
    }
    }
    canvas.restore();
    }


    public Body getBody() {
    return body;
    }


    public void setBody(Body body) {
    this.body = body;
    this.body.m_userData = this;
    }


    public int getType() {
    return type;
    }


    public void setType(int type) {
    this.type = type;
    }


    public float getR() {
    return r;
    }


    public void setR(float r) {
    this.r = r;
    }


    }

    当我们构建多个物体的时候,假如它们有共同性,提出公共方法为抽象类(至少有一个抽象方法)



    import org.jbox2d.dynamics.Body;
    import org.liky.angrybird.util.Globals;
    import org.liky.angrybird.util.JBoxUtils;


    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.graphics.Point;


    public abstract class Item {


    private Body body;


    private float width;
    private float height;


    private float life = 500;


    private int animIndex = 0;
    private int countDown = 2;


    // 记录销毁时的坐标,以及弧度
    private float[] destoryPoint;
    private float destoryAngle;


    public void draw(Canvas canvas, Paint paint, Point nowPosition) {
    // 前后的画布操作,在这里实现
    // 旋转画布 
    canvas.save();


    if (life > 0) {
    canvas.rotate((float) (body.getAngle() * 180 / Math.PI),
    body.getPosition().x * Globals.RATE + nowPosition.x,
    body.getPosition().y * Globals.RATE + nowPosition.y);
    } else {
    // canvas.rotate((float) (destoryAngle * 180 / Math.PI),
    // body.getPosition().x * Globals.RATE + nowPosition.x,
    // body.getPosition().y * Globals.RATE + nowPosition.y);
    }


    drawItem(canvas, paint, nowPosition);//只要重新实现这里就可以了


    canvas.restore();
    }


    public abstract void drawItem(Canvas canvas, Paint paint, Point nowPosition);


    public Body getBody() {
    return body;
    }


    public void setBody(Body body) {
    this.body = body;
    this.body.m_userData = this;
    }


    public float getWidth() {
    return width;
    }


    public void setWidth(float width) {
    this.width = width;
    }


    public float getHeight() {
    return height;
    }


    public void setHeight(float height) {
    this.height = height;
    }


    public float getLife() {
    return life;
    }


    public void setLife(float life) {
    this.life = life;
    if (life <= 0) {
    if (destoryPoint == null) {
    destoryPoint = new float[2];
    destoryPoint[0] = body.getPosition().x * Globals.RATE;
    destoryPoint[1] = body.getPosition().y * Globals.RATE;
    destoryAngle = body.getAngle();
    }


    // 当生命小于0时,需要将body销毁
    JBoxUtils.world.destroyBody(body);
    }
    }


    public int getAnimIndex() {
    return animIndex;
    }


    public void setAnimIndex(int animIndex) {
    this.animIndex = animIndex;
    }


    public int getCountDown() {
    return countDown;
    }


    public void setCountDown(int countDown) {
    this.countDown = countDown;
    }


    public float[] getDestoryPoint() {
    return destoryPoint;
    }


    public void setDestoryPoint(float[] destoryPoint) {
    this.destoryPoint = destoryPoint;
    }


    public float getDestoryAngle() {
    return destoryAngle;
    }


    public void setDestoryAngle(float destoryAngle) {
    this.destoryAngle = destoryAngle;
    }


    }

    package org.liky.angrybird.vo;


    import org.jbox2d.dynamics.Body;
    import org.liky.angrybird.util.Globals;
    import org.liky.angrybird.util.ImageUtils;


    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.graphics.Point;


    public class Wood extends Item {


    public Wood(Body body) {
    setBody(body);
    setWidth(Globals.PIECE_WIDTH * 3);
    setHeight(Globals.PIECE_HEIGHT / 2);
    setLife(100);
    }


    public void drawItem(Canvas canvas, Paint paint, Point nowPosition) {


    if (getLife() > 300) {
    canvas.drawBitmap(ImageUtils.getWood(0), getBody().getPosition().x
    * Globals.RATE - getWidth() / 2 + nowPosition.x, getBody()
    .getPosition().y
    * Globals.RATE
    - getHeight()
    / 2
    + nowPosition.y, paint);
    } else if (getLife() > 100) {
    canvas.drawBitmap(ImageUtils.getWood(1), getBody().getPosition().x
    * Globals.RATE - getWidth() / 2 + nowPosition.x, getBody()
    .getPosition().y
    * Globals.RATE
    - getHeight()
    / 2
    + nowPosition.y, paint);
    } else if (getLife() > 0) {
    canvas.drawBitmap(ImageUtils.getWood(2), getBody().getPosition().x
    * Globals.RATE - getWidth() / 2 + nowPosition.x, getBody()
    .getPosition().y
    * Globals.RATE
    - getHeight()
    / 2
    + nowPosition.y, paint);
    } else {
    setCountDown(getCountDown() - 1);
    if (getCountDown() == 0) {
    setCountDown(2);
    setAnimIndex(getAnimIndex() + 1);
    if (getAnimIndex() == 15) {
    setAnimIndex(14);
    }
    }


    canvas.drawBitmap(ImageUtils.getWoodDestory(getAnimIndex()),
    getDestoryPoint()[0] - Globals.PIECE_WIDTH / 2
    + nowPosition.x, getDestoryPoint()[1]
    - Globals.PIECE_HEIGHT + nowPosition.y, paint);
    }
    }
    }

    展开全文
  • 下面我们以水果为例,首先定义抽象类Fruit,抽象类中有公共属性vendor,抽象属性Price和抽象方法GrowInArea, public abstract class Fruit { public string vendor { get; set; } //默认为private public abstract...
  • 定义一个抽象类Person,其中有一个公共抽象方法work()。定义Person的子类:Student(学生)、Teacher(教师)。学生的工作是“预习、学习、复习、写作业”;教师的工作是“备课、上课、辅导、批改作业”。编写Test类,...

    定义一个抽象类Person,其中有一个公共的抽象方法work()。定义Person的子类:Student(学生)、Teacher(教师)。学生的工作是“预习、学习、复习、写作业”;教师的工作是“备课、上课、辅导、批改作业”。编写Test类,分别对学生和教师的工作方法进行测试,体现多态性。

    package dame;
    public  abstract class Person {
    void work(){}
    }
    class Student extends Person{
    	void  work(){
    		System.out.println("学生的工作是“预习,学习,复习,写作业”");
    		
    	}
    }
    class Teacher extends Person{
    	void work() {
    		System.out.println("老师的工作是“备课,上课,辅导,批改作业”");
    	}
    }
    
    
    package dame;
    
    class Test extends Person{
    	public static void main(String[] agrs) {
    		Student a = new Student();
    		a.work();
    		a = new Teacher();
    		a.work();
    	}
    }
    
    展开全文
  • 主要介绍了JAVA抽象类和抽象方法(abstract),结合实例形式分析了java抽象类及抽象方法相关定义、使用技巧与操作注意事项,需要的朋友可以参考下
  • 抽象类和抽象方法

    2015-08-12 20:29:26
    类的公共接口用抽象方法描述。每个抽象类中至少包含一个抽象方法。  抽象类和具体类的区别分别为:抽象类只能作为继承层次结构中的超类,不能创建抽象类的对象,而具体类(非抽象类)可以用来创建对象。  抽象...

    1.类是一组相同类型对象的描述,即通过类可抽象出一组对象的公共特性。而一组类的公共特性可以用超类来描述。同样,一组超类的公共特性或者公共接口的进一步抽象,可以用抽象类描述。类的公共接口用抽象方法描述。每个抽象类中至少包含一个抽象方法。

        抽象类和具体类的区别分别为:抽象类只能作为继承层次结构中的超类,不能创建抽象类的对象,而具体类(非抽象类)可以用来创建对象。

        抽象超类是一组类的一般化描述,它们仅仅指定子类的共同点。


    2.抽象方法的声明:使用关键字abstract声明抽象方法。  public abstract 返回类型 draw();抽象方法仅仅声明了功能的接口(声明了方法的头),并不提供功能的实现(既没有定义方法体)。包含抽象方法的类必须声明为抽象类。抽象类的所有具体子类都必须为超类的抽象方法提供具体实现。


    3.抽象类的声明:  public abstract class shape

        抽象类通常包含一个或多个抽象方法(静态方法不能为抽象方法)。抽象超类不能实例化,但可以使用抽象超类来声明引用变量,用以保存抽象类所派生的任何具体类的对象。应用程序通常使用这种变量来多态地操作子类对象。

    展开全文
  • 抽象类 定义:不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们。 抽象类的功能:为子类提供功能约束。...可包含成员:普通方法抽象方法、构造函数、成员变量(变量、常量)
  • Java抽象类和抽象方法详解

    千次阅读 2018-02-24 02:03:51
    Java抽象类和抽象方法详解一 . 由来 当编写一个类时,常常会给这个类定义一些方法来描述这个类的行为方式,通常这些方法都有相应的具体的方法体,但是,在某些情况下,某个基类只是知道其子类应该包含怎样的方法,...
  • 主要介绍了如何抽象一个Vue公共组件,以一个数字键盘组件为例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 面向对象——抽象类与抽象方法

    千次阅读 2020-04-13 09:26:04
    如果一个类不与具体的食物相联系,而只表达一种抽象的概念,仅是作为其派生类的一个基类,这样的类就是派生类,在抽象类中,声明抽象类中声明抽象方法是,如果加上abstract关键字则为抽象方法。abstract 修饰符可...
  • 抽象类中可以没有抽象方法 这是最近在Java开发人员工作面试的电话面试中向我的一位读者提出的有趣的Java核心问题之一。 即使他知道你 无法用Java将抽象类定型为final ,他对方法的措辞感到困惑。 答案很简单,不...
  • C#中的抽象类、抽象属性、抽象方法

    千次阅读 2020-06-10 00:51:31
    前言:本博文讲述了C#面向对象中的抽象类,通过本博文的阅读,读者可以掌握C#抽象类的概念、应用、好处以及一些特性。 文章目录一、抽象类概念二、示例讲解三、抽象类的作用四、使用抽象类的好处五、抽象类总结 一、...
  • 抽象方法和接口的区别

    千次阅读 2019-09-11 11:19:08
    接口和抽象方法的区别: 1、抽象类可以有构造方法,接口中不能有构造方法。 2、抽象类中可以有普通成员变量,接口中没有普通成员变量 3、抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有...
  • 前端组件化-抽象公共组件类

    千次阅读 2019-05-14 10:10:58
    上次的组件化demo只是为了简单的实现前端组件化的思想,这次我们稍微优化一下抽离公共类 下面代码 html <div id="wrapper"></div> 复制代码js /* DOM字符串转DOM节点 */ const createStringToDom = str ...
  • 利用实例巧妙区分“抽象方法”和“虚方法”!

    千次阅读 多人点赞 2020-07-08 08:39:47
    抽象方法是指定义在抽象类中的方法,需要在子类中被实现的方法。而虚方法是指可以被子类覆盖的方法,或者说是可以被重写的方法。 目录 什么是抽象方法和虚方法抽象方法和虚方法的区别 举例分析方法的不同 ...
  • 抽象类与抽象方法

    2007-07-06 13:44:00
    抽象类与抽象方法抽象类和抽象方法体现了C#中的另一个重要的概念,也是面向对象的重要概念,即抽象。本部分主要讨论抽象的相关话题。抽象类的定义 抽象类的用途是提供多个派生类可共享的基类的公共定义,并使用...
  • Java抽象类和抽象方法例子

    千次阅读 2017-09-17 23:56:59
    也提到抽象类与抽象方法的限制,下面我们会通过一下java抽象类小示例来给你介绍抽象类的用法。希望对你有所帮助。 假设我们要编写一个计算矩形、三角形和圆的面积与周长的程序,若按前面所学的方式编程,我们必须...
  • 一、抽象类、抽象方法1、抽象抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。 1. 被abstract关键字修饰的类叫抽象类 ...
  • JAVA中的抽象类和抽象方法

    千次阅读 2019-03-15 17:10:15
    1,抽象方法 (1)没有方法体{},必须使用abstract关键字来修饰。 (2)不能直接调用,只能被重写才能使用。 2,抽象类 (1)如果一个类中有一个方法抽象的,那么这个类就必须是抽象类。 (2)抽象类也必须使用...
  • C#中的抽象类和抽象方法

    千次阅读 热门讨论 2014-02-26 14:55:44
     在基类中的虚方法有时候不可能被调用到,而只是表达一种抽象的概念,用以为它的派生类提供一个公共的界面。 C#中引入了抽象类(abstract class)的概念,可以将它定义成抽象方法。将该方法所在的类定义成抽象类。 ...
  • 什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?
  • C#允许把类和方法声明为abstract,即抽象类和抽象方法抽象类通常代表一个抽象的概念,他提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的。所以在一个继承关系形成的等级结构中,树叶节点应当为...
  • C# 抽象类与抽象方法的作用与实例

    千次阅读 2015-08-16 21:16:19
    如果一个类设计的目点是用来被其它类继承的,它代表一类对象的所具有的公共属性或方法,那个这个类就应该设置为抽象类。 抽象类与其它的类有什么区别呢? 抽象类是不能够被实例化的。如果一个类中包含有抽象方法,...
  • 接口是一种引用数据类型,最重要的内容就是其中的:抽象方法 定义接口格式: public interface 接口名称{ //接口内容 } 接口都能定义抽象方法。 注意: 1.接口当中的抽象方法,修饰符必须是两个固定关键字: public ...
  • 抽象类(Abstract Class)抽象类 在面向对象的概念中... 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必...
  • Java中的抽象类、抽象方法、接口

    千次阅读 2018-10-25 00:17:17
    抽象 Java中抽象的前提是继承关系,没有了继承,抽象类就失去了灵魂。在继承关系中,子类可以继承父类的成员变量和成员方法,但是每个子类的方法的具体实现可能不一致,(可以通过重写(方法...抽象类、抽象方法的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 182,550
精华内容 73,020
关键字:

抽象的公共方法