core JAVA 学习篇之深入理解对象与类

一.面向对象概述

1.面向对象程序设计(OOP):

(1)由对象组成,每个对象包含,对用户公开的特定的功能部分,和隐藏的实现部分。

(2)如果对象能够满足需求,则不必关心其功能的实现过程。

(3)与结构化程序设计区别:

结构化程序设计:Algorithms + Data Structures = Programs;算法是第一位的,数据结构是第二位的。程序员首先确定如何操作数据,然后确定如何组织数据。

面向对象程序设计:Data Structures + Algorithms = OOP;OOP将数据结构放在首位,如何准确的实现,现实世界的事物的抽象?怎样设计存储抽象事物的属性的数据结构?其次在考虑数据的操作,为用户提供怎样,开放的灵活的方法。

二.JAVA类概述

1.类

(1)类,构建对象的模板。

(2)类构建对象的过程,称之为创建类的实例化。

(3)实例域,对象中的数据。

(4)方法,操纵数据的过程。

(5)封装,面向对象程序设计重要特征之一。实现封装,关键在于绝对不能让类中的方法直接的访问其他类的实例域。封装给对象赋予了“黑盒”特征,是提高重用性和可靠性的关键。

(6)类的扩展,扩展后的新类具有所扩展类的全部属性和方法。类扩展的过程称之为继承,后续详细介绍。

三.对象

1.对象的主要特征:

(1)对象的行为:可以对对象施加哪些操作,或可以对对象施加哪些方法?

(2)对象的状态:当施加那些方法时,对象方法如何响应?

(3)对象标识:如何辨别具有相同行为与状态的不同对象?

2.深入理解:

(1)同一个类的所有对象,由于支持的行为相同而具有家族式的相似性,对象的行为是用可调用的方法定义的。

(2)每个对象都保存着,描述当前特征的信息,这就是对象的状态,对象的状态的改变,会发生改变,但一般不是自发的,对象的状态的改变必须通过调用方法实现。如果,不经调用法方法可以改变对象的状态,说明封装性遭到破坏。

(3)对象的状态并不能完全描述一个对象。每个对象都有一个唯一的标识。

(4)对象的关键特性相互影响。

四.类与类之间的关系

1.依赖:

即“uses-a”,如果一个类的方法操纵另一个类的对象,就说一个类依赖于另一个类。

2.聚合:

即“has-a”,聚合关系意味着类A的对象包含着类B的对象。

3.继承:

即”is-a“,面向对象重要概念,后续分析。

时间: 2025-01-07 10:51:05

core JAVA 学习篇之深入理解对象与类的相关文章

JAVA学习篇--ThreadLocal,Java中特殊的线程绑定机制

在DRP项目中,我们使用了ThreadLocal来创建Connection连接,避免了一直以参数的形式将Connection向下传递(传递connection的目的是由于jdbc事务要求确保使用同一个connection连接).那么ThreadLocal是如果做到的呢?它和同步锁的不同在哪里? 是什么: 对于ThreadLocal看英文单词我们很容易理解为一个线程的本地实现,但是它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名为ThreadLoc

JAVA学习篇--Java类加载

由来: 与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序(解释性语言).当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Javaclass加载到JVM里头运行,负责加载Javaclass的这部分就ClassLoader.中文叫做类加载器. 类加载器就好比一个代理,你需要什么,我通过类加载器将你需要的内容返回给你! 类加载器有什么作用? 当程序需要的某个类,那么需要通过类加载器把类的二进制加载到内存中. 解释: 类加载器也是Java类,因为其他是java类的

JAVA学习篇--静态代理VS动态代理

本篇博客的由来,之前我们学习大话设计,就了解了代理模式,但为什么还要说呢? 原因: 1,通过DRP这个项目,了解到了动态代理,认识到我们之前一直使用的都是静态代理,那么动态代理又有什么好处呢?它们二者的区别是什么呢? 2,通过学习动态代理了解到动态代理是一种符合AOP设计思想的技术,那么什么又是AOP? 下面是我对它们的理解! 代理Proxy: Proxy代理模式是一种结构型设计模式,主要解决的问题是:在直接访问对象时带来的问题 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对

JAVA学习篇--JSTL基础

JSTL是什么 JSTL(JSP Standard TagLibrary,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库. 为什么要用JSTL 我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet.表达式和声明)代码用来实现相关逻辑控制.看下面程序.但这样做会带来如下问题: jsp维护难度增加;出错提示不明确,不容易调试; 分工不明确;(即jsp开发者是美工,也是程序员); 最终增加程序的开发成本; <% if (session.getAttribute(

java提高篇(四)_理解java的三大特性之多态 转自 http://cmsblogs.com

多态就是指程序中定义 的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该 引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定.因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让 引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个 运行状态,这就是多态性 一. 向上转型

Java学习笔记之深入理解引用

引言:Java中数据传递的方式,除了基本数据类型是按照值传递,其它类型全部是按照引用传递,这和C++有很大区别,但是很多网上文章都解释的不清楚,甚至是错误的,在查阅资料之后,下面整理出一个比较容易理解的版本. 我们知道引用根据引用的类型不同有许多名称,如字符串引用,数组引用等等. 一.栈内存和堆内存 我们数组来引出和解释这两个概念. 数组引用变量只是一个引用,这个引用可以指向任何有效的内存. 简单的理解就是,这个引用是用来存放数据地址的(数据地址指向数据在内存中的存储位置),在声明引用变量的时候

JAVA学习篇--javaweb之Filter详解

在DRP项目中,多次提到了Filter,它解决了字符集的统一设置以及统一控制简单WebCache,从中我们可以体会到,它给我们带来的好处不仅仅是减少代码量这么简单,它的出现避免了我们每个页面重复的编写相同的代码,减少了我们的工作量,而且给维护带来了极大的便利,那么它是如何实现统一管理的呢?既然它能统一管理某些重复的操作,那么它和AOP有什么关系呢? Filter简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过

JAVA学习篇--JAVA的两种编程模式对比

在Drp项目中,讲解了两种编程模式Model 1和Model2,下面是对这两种模式的简单理解,以及由于Model2是基于MVC架构的模式,就将我们易混淆的MVC与我们之前学的三层架构进行对比学习一下. Model1 所谓Model1就是JSP大行其道的时代,在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应.用少量的JavaBean来处理数据库连接.数据库访问等操作. 代码示例:修改用户信息 主页面的js跳转: function

java多线程之路之同步器—Core Java学习

今天为大家介绍几种java内置的同步器. CountDownLatch:倒计数门栓 CountDownLatch让一个线程集等待直到计数变为0.该Latch为一次性的,一旦计数为0,就不能再使用了. Sample 1: public class Driver { public static void main(String[] args) throws InterruptedException { CountDownLatch startSignal = new CountDownLatch(1