Java中的类和对象and包

学习Java都知道Java是一个面向对象的编程语言。那么什么是对象呢?什么是面向对象呢??有什么语言是面向对象的,什么语言是面向过程的???什么是面向过程????什么是类????怎样操作类和对象呢?????


  • 对象

对象

面向对象

首先说说Java是一个面向对象的编程语言。太抽象啦有木有,我理解是这样的。比如我们定义计算机是一个对象,它会有自己的状态和操作,我们可以要求对象执行一些操作,比如浏览网页、听音乐等等,其实我们操作的是这个对象的引用,而不是实物本身,我们并不关心计算机是如何打开网页的。这就使得编程遇到某个特定的问题可以通过添加新的对象适应这个问题。上面说到的操作对象的引用,我们可以这样理解。就还是操作那个计算机吧,我们用鼠标(引用)来操纵计算机(计算机),只要有这个鼠标(引用)就可以保持与计算机(对象)之间的连接。当有人想调节屏幕亮度、浏览网页实际上操控的是鼠标(引用),再由鼠标操控计算机(对象)。对象具有状态、行为和标识。即每个对象都有其自己的属性、方法并且在内存中都有唯一的地址。

面向对象的语言:Java、C++、pthyon...这些语言都是面向对象编程(Object-oriented Programming,OOP)的。他们有着共同的特征:继承、封装和多态。我们运用面向对象思想编程时,要学会找对象、建对象、用对象,并维护对象之间的关系。
 

面向过程

面向过程注重的是过程,在整个过程中所涉及的行为就是功能。最经典的面向过程编程语言就是C语言了,当然还有go...举个小栗子。。比如把大象装进冰箱这个问题。面向过程:1、打开冰箱门 2、把大象放进去 3、关闭冰箱门 ; 面向对象:我们就可以把冰箱定义为一个对象,这个对象拥有操作冰箱所具备的功能。打开、储存、关闭都是对冰箱这个对象所进行的操作。

类 

类的定义

类就是描述了具有相同特性和行为的对象集合,即类就是一类对象的统称,对象就是这一类具体的实例。类实际上就是一个数据类型。在Java中属于引用类型。用关键字class来声明类。

类的实例化

//创建类
class <class name> {
    field;  //成员属性
    method; //成员方法
}

//实例化对象
<class name> <对象名> = new <class name>();

//访问数据成员
<对象名>.field;
<对象名>.method;

注意的问题:

1、静态的数据成员和方法,只需要通过类名进行访问和调用,不依赖于对象。
2、new关键字用于创建一个对象的实例。
3、使用.来访问对象中的属性和方法。
4、同一个类可以创建多个实例。

类的成员

类的成员包括:字段(属性)、方法、代码块、内部类、接口等。

字段:字段就是成员属性,定义在类的内部,方法的外部。
①使用.访问对象的字段,访问既包含读也包含写。
②对于一个对象的字段如果没有显式设置初值,会被设置为默认值。数字类型---0,boolean---false,引用类型---null

方法:就是来描述对象的行为,定义在类中。
    ps:特殊的方法----构造方法
为什么要有构造方法呢?一是为了确保了每个对象在使用前都会被初始化,二是用来产生对象。使用关键字new实例化对象时会自动调用构造方法。因此new执行的过程(生成一个对象)共分为两步:a.为对象分配内存空间 b.调用对象合适的构造方法。为什么说合适的呢?因为一构造方法不止一个,有可能参数不同。 
   构造方法如何写:①方法名称必须和类名相同
                                ②没有返回值类型声明
注意:如果类中没有提供任何的构造方法,编译器默认生成一个不带参数的构造方法。构造方法支持重载。

代码块:使用{}定义的一段代码,包括普通代码块、构造块、静态块、同步代码块。
普通代码块:定义在方法中
构造代码块(实例代码块):定义在类中,初始化实例成员变量
静态代码块:使用static修饰的代码块,一般御用初始化静态成员属性
执行顺序:静态代码块>构造代码块>构造方法             并且静态代码块不管生成多少对象,只会执行一次!

包是组织类的一种方式。用import关键字导入包。

如何理解呢? 如果写了一个Test类,还需要一个Test类,两个同名的类就会引起冲突。因此我们可以创建一个包,再在包里写一个Teat类,这样看来,包就类似于一个文件夹,类就像是文件夹里的文件。

命令行编译包中文件:
1、javac com/bq/Test.java
2、java com.bq.Test
3、程序中导入包:package com.bq;

包的访问权限控制:

如果类中某个成员不包含public和private、protected关键字,这个成员可以在包内其他类使用,但是不能在类外使用。

常见的包:java.lang :系统常用的基础类(自动导入)
                  java.lang.reflect :java反射编程包
                  java.net :网络编程开发包
                  java.sql:数据库开发的支持包
                  java.util:java提供的工具程序包
                  java.io:I/O编程开发包

发布了51 篇原创文章 · 获赞 14 · 访问量 2329

猜你喜欢

转载自blog.csdn.net/qq_41185460/article/details/102759342