四时宝库

程序员的知识宝库

java学习笔记5——对象以及包,类和方法

如果有写的不对的地方,欢迎评论指正,相互学习相互进步,谢谢!

这部分对java面向对象的概念进行一个大致的说明。

一、对象

相信大家肯定知道,Java是一种面向对象的编程语言,而C是一种面向过程的编程语言,那么,什么是面向对象的思想呢?

对象可以是一个个体,可以是一个类别。世间万物皆对象。

还是很模糊?再直白点,你这个个体,就是一个对象。一个地球,也是一个对象。一台电脑,也是一个对象。

举个例子,开灯,如果用c这种面向过程的语句要怎么去思考,那就是:开关闭合,电路通了,灯泡通电,电使得灯丝发光。这是一个过程,那么用java怎么去理解呢,在这里,灯是一个对象,发光发亮是灯泡的一个功能,一个性质,所以,我们只要分析灯就行了,灯打开开关,灯发光。是不是对于c来说,简单了很多呢。

如果大家还不理解,就先记住,等学下去会加深理解的

这里要说一个领域对象的概念:

javabean

JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。

上述就是一个javabean,提供了set和get方法以及无参数的构造器,即最后一个方法。

对于简单的JavaBean也有几个名词:

1. VO:与简单Java对象对应,专门用于传递值的操作上

2. POJO:简单Java对象

3. TO:传输对象,进行远程传输时,对象所在的类必须实现

java.io.Serializable

接口。

这里大家可以了解一下。

二、包,类以及方法

在eclipse中(其他开发工具也一样),java代码的管理都是以工程–>包–>类–>方法,这样子的存储方式的:

其实本质就是文件夹,这个同学们可以自己去实验,到workspace看一下就知道了。这里不细说。

那么包,类,方法和对象有什么关系呢?

对象是在类的基础上建立的。类可以简单的理解为模板,而对象即在这个模板上制作出来的产品。类是一类物体的共同特性的抽象。对象是类的一个实例。或许现在大家不理解,但是可以记住这句话,在以后的开发实践中会慢慢理解的。

(一)、包

包的命名一般是域名的反转,为了便于管理代码。比如假设是百度在写代码,那么就是com.baidu.名称

(二)、类

说到类,这里就提一下修饰符,看上面图片中

java的访问控制修饰符有

public ,private,protect,default

他们的作用范围是:

访问权限子类其他包
public
protect×
default××
private×××

类中能出现的内容:全局变量,方法,代码块,内部类

那么怎么可以建立对象呢,主要有一下方法:

  1. 使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的)。比如:Demo demo= new Demo();

  2. 使用Class类的newInstance方法:我们也可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构造器创建对象,如:Demo demo2= (Demo)Class.forName("根路径.Demo").newInstance(); 或者:Demo de= Demo.class.newInstance();

  3. 使用Constructor类的newInstance方法:次方法和Class类的newInstance方法很像,java.lang.relect.Constructor类里也有一个newInstance方法可以创建对象。我们可以通过这个newInstance方法调用有参数的和私有的构造函数。如: Constructor<Demo> constructor = Demo.class.getInstance(); Demo de= constructor.newInstance(); 这两种newInstance的方法就是大家所说的反射,事实上Class的newInstance方法内部调用Constructor的newInstance方法。这也是众多框架Spring、Hibernate、Struts等使用后者的原因。

  4. 使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用clone方法创建对象并不会调用任何构造函数。要使用clone方法,我们必须先实现Cloneable接口并实现其定义的clone方法。如:Demo demo2= <Demo>demo.clone();这也是原型模式的应用。

  5. 使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象,在反序列化时,JVM创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现Serializable接口。如:ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj")); Demo demo3= (Demo)in.readObject();

(三)、方法

学过C语言的可以进行最直观的理解,方法就是函数,是在类中定义了具体特定功能的一段程序。一般表形式为:

代码:

上面是两个方法,第一个是特殊的main方法,它是所有程序的入口。第二个是在类中的方法。

方法中有两个概念:重写,重载

1、方法的重载

方法名相同,形式参数不同这种行为叫做方法的重载 。

如上面的代码,在一个类中,相同的方法在一定的条件下可以共存。只要里面的形式参数个数,类型以及位置不同就行。第二个和第三个也是不会报错的,因为位置不通。

2、方法的重写

这里先不做阐述,等到了继承的时候再讲。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接