什么是抽象Abstract

抽象Abstract:【新手可忽略不影响继续学习】    很多java 的书中都谈到了抽象abstract的概念,到底什么是抽象?马克-to-win:抽取关键相关特性(属性和方法)构成对象,用程序的方法逻辑和数据结构 属性模拟现实的世界对象。比如上节的例子,现实世界的计算机里的window很复杂,那么多像素,那么多颜色,那我们如何萃取出和我们相关的属性和方法完 成我们的客户的需求呢?这个过程就叫抽象。上例中我们只抽象出了title属性和close方法就可以满足用户需求。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。


【新手可忽略不影响继续学习】参见以上例子,width就是对象的属性,close就是对象的方法,简单来讲,所有对象的方法都一样,就写在类中,只写一份。对象属性的值,每个对象和每个对象都不一样。既然对于所有对象来讲,方法都一样,而只有属性不一样,能区分对象的,就只有属性了,这样来讲,观察属性,就显得尤为重要。我们可以认为,方法就是用来改变属性的。就拿上个例子来讲: @马克-to-win对于baoFengObject和xunLeiObject来讲,开始时,width属性都为0, baoFengObject.width=999;和xunLeiObject.width=111;以后,baoFengObject的width等于 999, 而xunLeiObject的width等于111。

本章源码
class MyTestDate {
    int year;
    int month;

    void setDate(int y, int m) {
        year = y;
        month = m;
    }

    String toStringabc() {
        return "" + year + "/" + month ;
    }
}

public class Test {
    public static void main(String[] args) {
        /* make the coin(硬币) based on the template(模板).@马克-to-win */
        MyTestDate date = new MyTestDate();
        MyTestDate date1 = new MyTestDate();
        System.out.println("The initial date is:" + date.toStringabc());

        date.setDate(2009, 7);
        System.out.println("After setting, the date is:" + date.toStringabc());
        System.out.println("The initial date1 is:" + date1.toStringabc());
    }
}

 

result is:

The initial date is:0/0
After setting, the date is:2009/7
The initial date1 is:0/0




作业:做一个类叫两个数。类里有两个属性,x和y,类里有一个方法叫设置x,它可以设置x的大小。类里还有一个方法,是打印xy。可以把xy两个值都打印出来。提高部分:类里还有一个方法叫做增加x。这个方法可以把x和输入参数相加返回。做测试类测试。



Assignment(作业): make a class called Window which has two properties called x,y and a method called drag(dx,dy), the method of drag can change the coordination of x,y, x=x+dx; also you need to create another method called print(), which can print the current x,y coordination. In your main method, you create two objects window1,window2, then you can drag window1 or window2, then print their x,y coordination.百度翻译:做一个类叫window,他有两个属性叫x,y,1个方法,叫做拖拽drag , 方法拖拽能够改变x,y的坐标,也需要创建另外一个方法叫做print, 它能够打印当前的x,y坐标,在你的主函数当中,你创建两个对象, window1,window2,然后你能拖拽window1,window2,然后打印他们的坐标。

Assignment2(作业): make a class of SpriteHero which has two properties called x,y,experience, and a method called move(dx,dy) and hit(), print method can print out all of the properties. when hit, then experience is increased by 1. then make main to test.( initially experience value is 5. x, y is 30,30) 百度翻译:做一个类叫做精灵英雄,他有两个属性叫x,y和经验值和三个方法叫做移动,点击,打印方法,能够打印出所有的属性, 当点击的时候,经验值就被增加一, 然后做一个主函数测试,它们经验值是5。x,y是30,30。  

 




实验

本章源码
class HelloClass {
    int i;

    int getI() {
        return i;
    }

    void setI(int ii) {
        i = ii;
    }
}

public class Test {
    public static void main(String[] args) {
        HelloClass hc = new HelloClass();
        hc.setI(9);
        int ri = hc.getI();
        System.out.println(ri);
    }
}

result is: 9