面向对象

作者: Aruforce | 来源:发表于2017-08-29 15:30 被阅读0次

    1.类与对象(Class and Object)

    类是对一系列对象某些共同特征的抽象,例如人是对张三李四王五的抽象,在这个例子中‘人’是一个类,张三李四王五则是类的一个个实例(对象)。

    class Person {
        String name;
        String age;
        void sayHello(){
        dosomthing();
        }
    }
    zhangsan = {name;"zhangsan",age:25};
    lisi = {name;"lisi",age:50};
    wangwu = {name;"wangwu",age:32};
    

    2.类的扩展及修改(extends)

    假定打招呼是人的一个基本能力,名字\年龄是人的基本属性,中国人、英国人、日本人都有名字年龄而中国人、英国人、日本人有却有各自的打招呼方式,为了创建中国人、英国人、日本人这三个差异化的Person类,我们可以对Person类进行扩展及修改。

    class Chinese extends Person{
        void sayHello() {
            System.out.println("我是"+name+",你好");//尽管在Chinese没有显示的标明具有name属性,通过声明扩展Person类获得了name属性,并重写了方法。
        }
        void sayHello(Person p){
            System.out.println("我是"+name+",你好"+p.name);//对自己类声明的方法进行重载
        }
    }
    class English extends Person{
        void sayHello() {
            System.out.println("I'm "+name+".Hello");//尽管在English没有显示的标明具有name属性,通过声明扩展Person类获得了name属性
        }
        void sayBye(){
            System.out.println("I'm "+name+".good bye");//对Person类进行了扩展,增加了sayBye()能力
        }
    }
    

    tips:其他人一般叫这种类的关系叫继承,尽管我们的目的就是对Person类进行扩展修改

    3.多态

    我们期望着在中国人和英国人分别打招呼的时候会使用各自的打招呼方式,(即调用Chinese、English类各自的sayHello()方法),如下代码:

    public class DemoTest {
        public static void main(String[] args) {
            Person p1 = new Chinese();
            p1.name = "张三";
            Person p2 = new English();
            p2.name = "Mark";
            p1.sayHello();// 我是张三,你好,
            p2.sayHello();// I'm Mark.Hello
            //我们并没有对p1,p2做类型检测,然后根据不同的检测结果在调用不同的类方法
        }
    }
    

    我们期望着,中国说‘你好’,英国人会说‘hello’,实际上也正是如此。
    多态的概念:同一操作作用于不同对象,可以有不同的解释,有不同的执行结果,这就是多态。

    4.个人总结

    问题的解决在我看来是 对问题涉及的各个事物状态进行改变。而一个事务状态的变化或获取最好交给这个事务本身去完成,因为我们假定自己最了解自己(或者叫你办事,我放心)。而编程解决问题的过程就可以分为几个阶段:>>对问题内的事物进行抽象>>对各个事物初始化>>获取事务的状态>>根据状态发送消息给事物>>事物变化状态。
    然而这个个人总结可能是我写业务逻辑较多造成的错觉(=_=!)。对于提高编程水平并没什么大用。。。

    相关文章

      网友评论

        本文标题:面向对象

        本文链接:https://www.haomeiwen.com/subject/zdqodxtx.html