Java基础:对象与类的定义与使用

简介: Java基础:对象与类的定义与使用

我们知道Java是完全面向对象的,所以需要熟悉OOP(面向对象程序设计)才能够编写Java程序。


一、面向对象程序设计


面向对象程序设计就是通过对象来进行程序设计,将客观世界中的一个事物作为一个对象来考虑,对象表示一个可以明确标识的实体。

比如一只小狗,他就是一个对象。每个对象都有自己的属性和行为。小狗的属性根据需要有性别、体重等,他的行为有吃饭、睡觉、玩耍等。

从程序设计的角度来看,事物的属性可以用变量来描述,行为则用方法来反映。

每个对象都有自己独特的标识、状态和行为。


1.面向对象的三大特征:封装、继承、多态


封装

类是封装的基本单元。通过封装可以隐藏类的实现细节,也可以避免对类中属性的直接操作。可以通过类的公共接口访问类中的变量,而不必知道这个接口的具体实现方式。只要这个方法的名字和参数不变,即使类中的变量被重新定义,或方法的代码被修改,对类中的变量的访问也不会受到影响。比如,你在计算机上安装了一个声卡,你不必知道声卡的内部结构,也不必知道功能如何实现的,因为实现声卡功能的继承电路被封装了。你只要知道声卡应该装在电脑主板的什么位置,其他的设备如音箱,光驱怎样和声卡连接就可以了。


继承

继承是对类的功能的重用和扩充。通过对某一个类的继承产生一个新的子类,子类既有从某个类中继承下来的功能,又可以自行定义自己的变量和方法,产生新的功能。


多态

多态性指的是方法的名字相同,但实现不同。即“同一接口,多个方法”。如有三个方法,分别用来计算圆、矩形、三角形面积,他们的名字可以都叫做area。


2.类

类是构造对象的模板或蓝图。我们可以将类想象成制作甜饼的切割机,将对象想象为甜饼。由类构造对象的过程称为创建类的实例。


对象中的数据称为域,操纵数据的过程称为方法。对于每个特定的类实例对象都有一组特定的实例域值。


在Java中,所有类都源自于Object类


3.类之间的关系


依赖 ( “uses-a” )

聚合 ( “has-a” )

继承 ( “is-a” )

这里简单的解释一下:


依赖: 如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类.是一种最明显,最常见的关系.

我们应该尽可能少的减少类之间的依赖,(类B的改变不会导致A产生任何bug是最好的). 用软件工程的术语来说,就是让类之间的耦合度最小.


二、使用预定义类


1.对象与对象变量


要想使用对象,就必须首先构造对象,并指定其初始状态.然后对对象应用方法.


在Java程序设计语言中,使用构造器(构造器会在之后的文章介绍)构造新实例. 构造器是一种特殊的方法, 用来构造并初始化对象.


我们以Java类库中的Date类为例:


构造器的名字应该与类名相同.因此Date类的构造器名为Date.下面构造一个Date对象:


new Date()


这个表达式构造了一个新对象. 这个对象被初始化为当前的日期和时间.

也可以将这个对象传递给一个方法:


System.out.println(new Date());


想多次使用构造对象,可以将对象存放在一个变量中:

Date birthday = new Date();


如图显示了引用新构造的对象变量birthday:


20190221221702151.png


在对象与对象变量之间存在着一个重要区别. 例句:

Date deadline;


定义了一个对象变量deadline,它可以引用Date类型的对象.

一定要认识到:变量deadline不是一个对象,实际上也没有引用对象.

还要认识到:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象.

代码举例:

    deadline = new Date() ;  //  用新构造的对象初始化变量
    deadline = birthday;


现在这两个变量引用同一个对象. 如图:


2019022122480634.png

目录
相关文章
|
10月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
1093 157
|
11月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
528 101
|
11月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
418 100
|
10月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
413 4
|
10月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
419 5
|
10月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
514 5
|
10月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
439 1
|
10月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
561 1
|
10月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
365 0
|
10月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
407 1

热门文章

最新文章