您的位置:首页 > 编程语言 > Java开发

java基础知识总结4面向对象类与方法

2017-04-07 10:54 155 查看


面向对象和面向过程的本质区别

    语言的进化发展跟生物的进化发展其实是一回事,都是”物以类聚”。相近的感光细胞聚到一起变成了我们的眼睛,相近的嗅觉细胞聚到一起变成了我们的鼻子。

语句多了,我们将完成同样功能的相近的语句,聚到了一块儿,便于我们使用。于是,方法出现了!

变量多了,我们将功能相近的变量组在一起,聚到一起归类,便于我们调用。于是,结构体出现了!

再后来,方法多了,变量多了!结构体不够用了!我们就将功能相近的变量和方法聚到了一起,于是类和对象出现了!

寥寥数语,就深刻的展示了语言的进化历史!其实,都非常自然,”物以类聚”。希望大家能记住这句话。

    企业的发展也是”物以类聚”的过程,完成市场推广的人员聚到一起形成了市场部。完成技术开发的人员聚到一起形成了开发部!

面向过程的思维模式

    面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么、第二步做什么的细节中。这种思维模式适合处理简单的事情,比如:上厕所。

如果面对复杂的事情,这种思维模式会陷入令人发疯的状态!比如:如何造神舟十号!

面向对象的思维模式

    
面向对象的思维模式说白了就是以类为思维模式。面向过程就是以方法为思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。

这样就可以形成很好的协作分工。比如:设计师分了10个类,然后将10个类交给了10个人分别进行详细设计和编码!

显然,面向对象适合处理复杂的问题,适合处理需要多人协作的问题!

如果一个问题需要多人协作一起解决,那么你一定要用面向对象的方式来思考!

老毛显然是面向对象思维方式的高手,很好地对中国的阶层做了分类(大家可以看看老毛的著作,都是谈各个阶层的关系问题,面向对象啊!),然后,让他手下的干将制定详细策略各个击破。老毛不出延安,天下事就已定! 若老毛生在今天做了程序员,必然也将做到总监、架构师级别。

老蒋显然没有采用面向对象的思维方式处理问题,天天忙得团团转,做着飞机到处指挥,最后被赶到了一个小岛上。若老蒋生在今天做了程序员,嗯,老蒋会是个天天加班干的好程序员。

  对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。

面向对象编程(oop)的本质

面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。抽象是什么?就是将多个物体共同点归纳出来,就是抽出像的部分!从认识论角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽象。从代码运行角度考虑是先有类后有对象。类是对象的模板。

什么是类与对象

类;类是一种抽象概念比如人类
动物类
植物类

对象:对象是一种看得见
摸得着实际存在的类的具体体现比如牛
就是动物类的一个对象

类与对象的创建

//利用关键字class+类名,一个类里面包括属性和操作两个方面

public classPerson

{

属性用于定义该类或该类对象包含的数据或者说静态属性属性作用范围是整个类体。

属性的默认初始化:在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。(数值:0,0.0   char:\u0000,  boolean:false,  所有引用类型:null)  

属性定义格式:[修饰符]  属性类型  属性名 = [默认值] 

String name;

int age;

//方法(操作)
方法是类和对象动态行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序有一个个函数调用组成;面向对象中,整个程序的基本单位是类,方法是从属于类或对象的。

 方法定义格式:

[修饰符]  方法返回值类型  方法名(形参列表) {

// n条语句

}

 

public void eat()

{

System.out.println("吃饭");

}

}
fa74

 java对象的创建和使用

    必须使用 new 关键字创建对象。

    Person person= new Person ();

   使用对象(引用) . 成员变量来引用对象的成员变量。

  person.age 

 使用对象(引用) . 方法(参数列表)来调用对象的方法。

  person. setAge(23) 

类与对象的实例

 public class Student {

    //静态的数据

     String name;

     int id;    //学号

     int age;

     String gender;

     int weight; 

//动态的行为

 public void study(){

 System.out.println(name+"在學習");

 }

  public void sayHello(String sname){

 System.out.println(name+"向"+sname+"說:你好!");

}

}

public class Test1 {

  public static void main(String[] args) {

        Student s1 = new Student();

        s1.name = "高琪";

        s1.study();

        s1.sayHello("馬士兵");

        Student s2 = new Student();

        s2.age = 18;

        s2.name="老高";

        }

}

JAVA程序运行的内存分析

栈:

    1.    每个线程私有,不能实现线程间的共享!

    2.    局部变量放置于栈中。

    3.    栈是由系统自动分配,速度快!栈是一个连续的内存空间!

堆:

    1.    放置new出来的对象!

    2.    堆是一个不连续的内存空间,分配灵活,速度慢!

方法区(也是堆):

    1.    被所有线程共享!

2.    用来存放程序中永远是不变或唯一的内容。(类代码信息、静态变量、字符串常量

 

垃圾回收机制(Garbage 
Collection)

JAVA的内存管理实际上指的就是对象的管理,其中包括对象空间的分配和释放。

对象空间的分配

使用new关键字创建对象即可

对象空间的释放

将对象赋值null,即该对象没有引用指向时。垃圾回收器将负责回收所有”不可达”对象的内存空间。

 

要点

程序员无权调用垃圾回收器。

程序员可以通过System.gc()。通知GC运行,但是JAVA规范并不能保证立刻运行。

finalize方法,是JAVA提供给程序员用来释放对象或资源的方法,但是尽量少用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: