我们每天在撸码,那么我们在敲什么东西呢?明显的我们在写类,写一个类,写一个接口,写某个接口里面写一些属性,在某个类里面写一个方法,然后以一个对象调用方法,对于j2ee来讲的话,可能还会写一些jsp,静态的html,还有不可避免的被大家一直诟病的xml配置文件。具体的java语言规范,以后我会专门做整理,在这里我只关注java面向对象。



要说面向对象,核心就是两个东西:类和对象 。





那么什么是类?自定义数据类型,类是某一批对象的抽象,所有的类都是引用数据类型。

什么是对象?具体存在的实体 。

2者有什么关联呢?以下解释个人觉得已经很透彻了:定义一个类是为了重复创建该类的实例,同一个类的多个实例具有共同的特征,而类就是定义了这些实例的共同的特征。类不是一种具体的存在,实例才是一种真实的存在。以下说法就很清楚了:你不是人这个类,我也不是人这个类,我们都只是人的实例。



[修饰符]  class 类名 [extends  Superclassname     implements  interface {,interface } ] { 

          零到多个构造器定义。。。

 零到多个属性。。。

 零到多个方法。。。

    } 



对于一个类来讲,有3个成员:构造器,属性,方法,下面一一来介绍这3个成员:

    属性:

[修饰符] 属性类型 属性名 [=默认值];

    上面的数据类型可以是8种基本类型,也可以是引用类型。玩j2ee的话,我个人觉得在定义一个类的时候,基本不会用到基本类型的数据类型,一般都是引用类型和包装类。其中的修饰符可以是public等限定符,final,abstract。

    

方法:

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

零到多条可执行性语句。。。

       (本地的native及抽象的方法没有体部分) 

    } ;

     有返回值声明返回值类型,且方法的最终的返回类型要和声明的一致,要是没有返回体,声明为void。形参可以为多个,多组参数之间用英语“,”隔开



    构造器:

    [修饰符] 构造器名(形参){ 

        零到多条可执行性语句。。。

 
} ;

 java语法规定:构造器是一个特殊的方法,构造隐身返回该类的实例,无需定义返回值类型。



以下代码定义了一个Linkin类:

<strong>public class Linkin {

    //定义2个属性:name,age。养成良好的习惯,在写一个类的时候,属性后面加属性备注
private String name;//姓名
private Integer age;//年龄 //同样的养成良好的习惯,默认的构造器不管使用不使用,都写上。
public Linkin(){ } public Linkin(String name, Integer age) {
super();
this.name = name;
this.age = age;
} //定义一个方法
public void sayHi(){
System.out.println("要知足,要平凡,要感恩,结了婚的人,不可再任意强求,");
} }
</strong>

看一行代码: Person p = new Person();上行代码实际产生2个东西,一个是p变量,一个是person对象,并将这个Person对象赋给p变量。



和数组类型一样,类也是一种引用数据类型。上面程序定义的Person类型的变量实际上是一个引用,它被存放在栈内存里,指向实际的Person对

象,而真正的Person对象则存放在堆内存中。以下是示意图:





java里面不存在指针,关于java里面的引用,记住下面一句话:



和数组一样,当程序访问引用变量的属性和方法时,实际上是访问该引用变量所引用的对象的属性和方法。如果希望垃圾回收机制回收某个对象,

只需切断该对象的所有的引用变量和它之间的关系即可,也就是把这些引用变量赋值为null。



最后:要理解下面2点。

        

  •  在java中对面向对象(OO)的要求

    1.对象是客观存在的,万物皆对象。        (注:看不见的对象并不表示该对象不存在,比如说事件);

    2.简单性:采用面向对象方法可以使系统各部分各司其职各尽所能。

    3.复用性:对象的功能越简单其可重用性越高。

    4.弱耦合性:各司其职各尽所能。

    5.高内聚性:一个对象独立完成一个功能的能力

    6.类是一类事务的共性,是人类主观认识的一种抽象,是对象的模板。





  • 面向过程与面向对象的对比

    面向过程:先有算法,后有数据结构。先考虑怎么做。

    面向对象:先有数据结构,后有算法。先考虑用什么做。







linkin大话面向对象--类和对象的更多相关文章

  1. Java面向对象-类与对象

    Java面向对象-类与对象 类与对象的关系 我们通俗的举个例子,比如人类是一种类,张三这个人就是人类的具体的一个个体,也就是java中的对象:这就是一个类与对象的关系: 类的定义 下面看实例 类的创建 ...

  2. Python之面向对象类和对象

    Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object): """ 类里定义一类事物共同的技能. 可以是变量,也可是函 ...

  3. C#编程语言与面向对象——类与对象

    由于ASP.NET技术是全面向对象的,因此,要掌握这一技术,必须具备有扎实的面向对象理论基础 使用C#编程,所有的程序代码几乎都放在类中,不存在独立于类中之外的函数,因此,类是面向对象编程的基本单元 ...

  4. OC语言的面向对象—类和对象、方法

    1. 面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 1. 面向对象和面向过程的区别 1) 以用电脑听歌为例子 a) 面向过程 ➢ 打开电脑 ➢ ...

  5. linkin大话面向对象--枚举

    枚举类(enum) 其实我们使用到枚举的地方还是很多的,其实我们可以完全人工的来实现枚举的功能.比如说我现在手里的项目我就是自己实现的枚举,说白了,枚举就是一个类的多例模式. 1,使用enum声明,默 ...

  6. linkin大话面向对象--java关键字

    java中的关键字有以下几个,他们不能作任何其它的用途. 发现没,java中的关键字全是小写,java是严格区分大小写的. abstract  default  null  synchronized ...

  7. linkin大话面向对象--构造器详解

       对象的产生格式:类名称  对象名 = new  类名称(); 因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法.如:CellPhone cp = new CellPhone( ...

  8. Java面向对象——类,对象和方法

    1.类的概念 在生活中,说到类,可以联想到类别,同类,会想到一类人,一类事物等等.而这一类人或事物都是具有相同特征或特点和行为的,我们根据不同的特征或特点和行为将他们归类或分类.同时,当我们认识一个新 ...

  9. day 22 面向对象 类与对象 名称空间操作

    一.面向对象 1.面向过程编程 核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么 基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式. 优点:复杂的问 ...

随机推荐

  1. Linux 常见命令示例【一】

    查看端口占用 [查看目前系统上已在监听的网络联机及其pid netstat –tlnp] 文件挂载 Linux与windows文件传输(三方软件:secureCRT, WINscp) 1)sftp S ...

  2. 【扩展欧几里得】NOIP2012同余方程

    题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正 ...

  3. 【转载】mysql主键的缺少导致备库hang

    最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的 ...

  4. shader程序员需要注意的优化Tips

    在写shader的时候,其实一些写法对于其执行影响非常大,而且由于gpu和cpu在架构上的不同,代码的优化思想也不一样,最近一直在写几个shader,为了性能问题,查阅了很多资料,把一些tips总结下 ...

  5. JavaScrip:Function函数编程

    自定义函数定义 1.函数通过function关键字创建,函数创建格式: function 函数名称([参数,...]){ 代码段; return 返回值; } 注意事项: 函数名称不要包含特殊字符 函 ...

  6. 强化学习 - Q-learning Sarsa 和 DQN 的理解

    本文用于基本入门理解. 强化学习的基本理论 : R, S, A 这些就不说了. 先设想两个场景:  一. 1个 5x5 的 格子图, 里面有一个目标点,  2个死亡点二. 一个迷宫,   一个出发点, ...

  7. UINavigationController 返回手势与 leftBarButtonItem

    UINavigationController 返回手势与 leftBarButtonItem UINavigationController 自带从屏幕左侧边缘向右滑动的返回手势,可以通过这个手势实现 ...

  8. .net的retrofit--WebApiClient底层篇

    前言 本篇文章的内容是WebApiClient底层说明,也是WebApiClient系列接近尾声的一篇文章,如果你没有阅读过之前的的相关文章,可能会觉得本文章的内容断层,WebApiClient系列文 ...

  9. reduce 方法 (Array) (JavaScript)

    对数组中的所有元素调用指定的回调函数.该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供. 语法         array1.reduce(callbackfn[, in ...

  10. poj_2503(map映射)

    题目链接poj2503 Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 38820   Accepted: ...