网站首页 > java教程 正文
如果有写的不对的地方,欢迎评论指正,相互学习相互进步,谢谢!
这部分对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 | ∨ | × | × | × |
类中能出现的内容:全局变量,方法,代码块,内部类
那么怎么可以建立对象呢,主要有一下方法:
使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的)。比如:Demo demo= new Demo();
使用Class类的newInstance方法:我们也可以使用Class类的newInstance方法创建对象,这个newInstance方法调用无参的构造器创建对象,如:Demo demo2= (Demo)Class.forName("根路径.Demo").newInstance(); 或者:Demo de= Demo.class.newInstance();
使用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等使用后者的原因。
使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去,用clone方法创建对象并不会调用任何构造函数。要使用clone方法,我们必须先实现Cloneable接口并实现其定义的clone方法。如:Demo demo2= <Demo>demo.clone();这也是原型模式的应用。
使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象,在反序列化时,JVM创建对象并不会调用任何构造函数。为了反序列化一个对象,我们需要让我们的类实现Serializable接口。如:ObjectInputStream in = new ObjectInputStream (new FileInputStream("data.obj")); Demo demo3= (Demo)in.readObject();
(三)、方法
学过C语言的可以进行最直观的理解,方法就是函数,是在类中定义了具体特定功能的一段程序。一般表形式为:
代码:
上面是两个方法,第一个是特殊的main方法,它是所有程序的入口。第二个是在类中的方法。
方法中有两个概念:重写,重载
1、方法的重载
方法名相同,形式参数不同这种行为叫做方法的重载 。
如上面的代码,在一个类中,相同的方法在一定的条件下可以共存。只要里面的形式参数个数,类型以及位置不同就行。第二个和第三个也是不会报错的,因为位置不通。
2、方法的重写
这里先不做阐述,等到了继承的时候再讲。
猜你喜欢
- 2024-10-20 使用idea将Java项目打成Jar包,之后生成exe可执行文件
- 2024-10-20 Java并发包,你需要掌握的atomic(java并发实现原理)
- 2024-10-20 一款易于使用的Java验证码软件包(javaee验证码)
- 2024-10-20 Java 覆盖 jar 包内的方法(java覆盖第三方jar中类文件)
- 2024-10-20 都说Java程序占内存多,那么Java对象究竟占多少内存?
- 2024-10-20 JAVA学习笔记之导包(java中的导包命令是哪个)
- 2024-10-20 简单介绍Java 的JAR包、EAR包、WAR包区别
- 2024-10-20 Java juc包学习笔记(java的juc包)
- 2024-10-20 Java带包结构调用命令行运行编译(java怎么使用包)
- 2024-10-20 Java并发包-atomic包-让您彻底掌握AtomicInteger源码
你 发表评论:
欢迎- 07-21如何将 iPhone 中的联系人导出到 Excel/CSV?
- 07-21sql查询的字段数据中有逗号。放到csv文件会分开,如何解决?
- 07-21在 WebAPI 里生成 csv zip 文件(webapi怎么发布在iis上)
- 07-21如何把csv格式转换成Excel格式(csv格式怎么转换)
- 07-21如何将高程导出为XYZ或CSV高程点(如何将高程数据导入cad)
- 07-21使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)
- 07-21解决PHP导出CSV文件中文乱码问题(php导出excel文件)
- 07-21使用vba将Excel 文件转成 CSV 文件
- 最近发表
-
- 如何将 iPhone 中的联系人导出到 Excel/CSV?
- sql查询的字段数据中有逗号。放到csv文件会分开,如何解决?
- 在 WebAPI 里生成 csv zip 文件(webapi怎么发布在iis上)
- 如何把csv格式转换成Excel格式(csv格式怎么转换)
- 如何将高程导出为XYZ或CSV高程点(如何将高程数据导入cad)
- 使用python把csv汇总成excel(python怎么将csv文件中的列存入列表)
- 解决PHP导出CSV文件中文乱码问题(php导出excel文件)
- 使用vba将Excel 文件转成 CSV 文件
- python爬虫25 | 爬取的数据怎么保存?CSV了解一下
- MySQL 导出数据(mysql 导出数据 判断成功)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)