zoukankan      html  css  js  c++  java
  • JAVA面向对象思想理解分析

    1.面向对象是面向过程而言.两者都是一种思想。
    面向过程:强调的是功能行为。(强调过程、动作)
    面向对象:将功能封装进对象,强调了具备了功能的对象。(强调对象、事物)
    面向对象是基于面向过程的。将复杂的事情变简单了。
    面向过程-->面向对象:执行者-->指挥者
    将过程、功能封装进对象里面。
    面向对象三大特征:封装、继承、多态。(找对象,建立对象,使用对象,维护对象的关系。)
    老者境界:(万物皆对象!!!)
    例:公司招聘程序员:为了提高效率,公司老板从面向过程到面向对象(执行者-->指挥者)
    例:去饭店吃饭,服务员具备点菜功能是对象,我们是指挥者。
    2.以后写程序就是找对象使用,有对象就拿过来用,没对象就造一个对象。
    人开门:名词提炼法
    人{
    开门(门)
    {
    门.开();
    }
    }
    门{ 
    开(){操作门轴..}
    }
    3.类(class)和对象的关系:类是对现实生活中事物的描述。对象就是这类事物,实实在在存在的个体。
    描述事物就是描述事物的属性和行为。
    属性对应类中的变量,行为对应类中的函数(方法)。
    定义类是描述事物定义属性和行为。【属性】和【行为】共同成为类中的成员(成员变量和成员方法);
    (现实生活中对象:张三、李四。
    想要描述:这些对象共性内容。对具体的抽象。
    描述时:这些对象的共性有:姓名,年龄,性别,学习java时间、功能。)
    映射到java中:描述是class中定义的类。具体对象是对应java在堆内存用new建立的实体。
    4.类类型变量(引用类型)指向对象。(栈内存产生类类型变量指向实体)(堆内存产生实体)
    5.成员变量作用于整个类中class,局部变量作用在函数中。
    成员变量作用堆内存中因为对象的存在才在内存中存在;局部变量作用于栈内存中。
    6.匿名对象:new Car().num=5;匿名对象调用属性没意义。调用方法有意义。(方法在方法去中)
    当对对象的方法只调用一次时,可以使用匿名对象,这样比较简化;
    如果对一个对象进行多成员调用,必须给这个对象起名字。
    可以将匿名对象作为实际参数进行传递。
    例如:show(new car());public static void show(car c){c.num=3;c.color=4;}可以简化书写;
    7.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问的方式。
    好处:将变化隔离;便于使用;提高重要性;提高安全性。
    封装原则:将不需要对外提供的内容都隐藏起来;
    【把属性都隐藏,提供公共方法对其访问】。
    【函数是代码中最小封装体。】.
    对属性的封装,提供get、set方法访问,赋值
    private只在私有类中访问。封装不是私有,私有仅仅是封装的一种表现形式。之所以对外提供访问方式,因为在访问方式中加入逻辑判断等语句。
    一个类里面有属性set(void)设置和get返回,那么这个属性是私有的。
    8.构造函数:函数名和类名一致;不用定义返回值类型(不用void...);不写return语句。
    对象一建立调用与之对应的构造函数。
    构造函数的作用:可以给对象进行初始化。
    构造函数的细节:当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
    构造函数和一般函数写法上、运行上不同,构造函数是在对象一建立就运行。给对象初始化。
    而一般方法(set get)是对象调用才执行,是给对象添加对象具备的功能。
    一个函数一建立,构造函数只运行一次。而一般方法可以被该函数对象调用多次。
    9.构造代码块,作用:给对象初始化,对象一建立就运行,优先于构造函数执行。构造代码块给所有对象初始化,
    构造函数给对应对象初始化。
    不同的构造函数有相同初始化内容。
    10.局部的变量赋予给成员的用this关键字。(同名)
    this的特点:this代表本类【对象】。this代表所在函数所属对象的引用。
    哪个对象在调用this所在函数,this就代表那个对象。
    this应用:当定义本类中功能,该函数内部调用该函数对象,用this表示这个对象。
    11.构造函数之间的调用用this();用于区分同名变量的情况。
    this语句只能在构造函数第一行。
    12.static关键字。是一个修饰符,用于修饰成员(成员变量,成员函数)(在方法区中)
    不在堆内存中,对象可以共享。
    可以被类名调用。(类名.静态成员)。
    static静态的特点:
    1.随着类的加载而加载。2.被所用对象共享。3.优先于对象存在。4.可以被类名调用。5.静态变量可以使用get、set方法
    特有的数据用成员变量,多个对象共用的数据用静态变量。
    13.实例变量和类变量(static)区别
    1.类变量随着类的加载存在于方法区中。实例变量随着对象建立存在堆内存中。
    2.类变量生命周期长,随着类消失而消失。实例变量随着对象的消失而消失。
    3.主函数是静态的。
    14.静态使用注意事项:
    1.静态方法只能访问静态成员(属性,方法)。非静态方法既可以访问静态也可以访问非静态。
    2.静态方法中不可以定义this.super关键字。(静态优先于对象存在,对象中有this.)

     
  • 相关阅读:
    天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
    poj2718 Smallest Difference【贪心】
    HDU problem 5635 LCP Array【思维】
    codeforces 782C Andryusha and Colored Balloons【构造】
    HDU 4278 Faulty Odometer【进制转换】
    codeforces B. The Meeting Place Cannot Be Changed【二分】
    POJ 3264 Balanced Lineup 【线段树】
    HDU 1850
    CodeForces-714C
    HDU Problem 1247 Hat's Words 【字典树】
  • 原文地址:https://www.cnblogs.com/reeber/p/Reeber.html
Copyright © 2011-2022 走看看