1、软件出现的目的:

用计算机的语言描述现实世界

用计算机解决现实世界的问题

 

面向对象设计和开发程序的好处:

   交流更加流畅

   提高设计和开发效率

计算机语言的发展向接近人的思维方式演变:汇编语言 [面向机器]、c语言    [面向过程]、java语言 [面向对象]

类和对象的区别和联系

1、类是抽象的,概念的,代表一类事物,比如人类,猫类..

2、对象是具体的,实际的,代表一个具体事物

3、类是对象的抽象,对象是类的实例

2、面向对象设计的过程就是抽象的过程,分以下三步:

    第一步:发现类;

   第二步:发现类的属性;

   第三步:发现类的方法;

3、类图:使用类图描述类

  用于分析和设计“类”;

  直观、容易理解;

    

4、类名、属性名、方法名、常量名命名规范:

    类名由一个或几个单词组成,每个单词的第一个字母大写,ru:Dog、StringBuffer;

    ◆属性名和方法名由一个或几个单词组成,第一个单词首字母小写,其他单词首字母大写,如:health、stuName、println()、getMessage();

    ◆常量名由一个或几个单词组成,所有字母大写,如:PI;

5、构造函数:

无参构造函数:

  方法名与类名同名;

  没有返回值;

  与返回修饰符无关;

  作用:给成员属性默认赋予初始值

6、构造方法:

构造方法是类的一种特殊的方法,

它的主要作用是完成对新对象的初始化。(初始化你的成员属性(变量);

它有几个特点:

1、方法名和类名相同

2、没有返回值

3、在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化。

★一个类可以定义多个不同的构造方法。

★调用时:

★给予不同的初始值,调用的构造方法不同,构造方法虽同名,但系统会根据初始值来选定构造方法。

 

示例:系统提供默认构造函数

  public Pnguin()

  {   

  }

    F5单步跳入

    F6单步跳过

类的构造方法小结:

  1、构造方法名和类名相同;

  2、构造方法没有返回值;

  3、主要作用是完成对新对象的初始化;

  4、在创建新对象时,系统自动的调用该类的构造方法;

  5、一个类可以有多个构造方法;

  6、每个类都有一个默认的构造方法。

  7、构造方法一般使用public修饰,但在单例模式中,也可以使用private修饰

7构造方法重载:

自定义构造方法:系统不再提供默认无参构造方法

构造方法重载的调用:

Eg:说出运行结果:

Eg:错误示例

8、方法重载的判断依据:

       必须在同一个类里

       方法名相同

       参数列表(方法参数的个数或参数类型)不同

       与方法返回值和方法修饰符没有任何关系。

          ▲在使用this调用自身的其他构造方法时,只能作为第一条语句;

9、static修饰符:static可以用来修饰属性、方法和代码块

        ●static代码块://静态代码块只能给static属性赋初始值;永远都比构造方法先执行一步;

            语法: static                 

        {   

        }

            eg:static   {

      name=“小明”;

      System.out.print(“我是静态代码块”);

     }                           

        ●static修饰的变量属于这个类所有,即由这个类创建的所有对象公用一个static变量;

        ●把static修饰的属性和方法成为类属性(类变量)和类方法,

  ●不用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)和实例方法;

类变量是该类的所有对象共享的变量,

任何一个该类的对象去访问它时,取到的都是相同的值,

同样任何一个该类的对象去修改它时,修改的也是同一个变量。

 

定义语法:

      访问修饰符 static 数据类型 变量名;

访问类变量:

      类名.类变量名  或者  对象名.类变量名

类方法是属于所有对象实例的

语法:

      访问修饰符 static 数据返回类型 方法名(){}

    注意:类方法中不能访问非静态变量(类变量)。

使用:

  类名.类方法名 或者 对象名.类方法名

    ★static静态的方法可以访问static静态变量,不能访问非静态变量(类变量)

          ★非静态方法可以访问非静态变量(类变量),同时也可以访问static静态变量。

       ▲java中规则:类变量原则上用类方法去访问或操作

类变量与实例变量区别:

  加上static称为类变量或静态变量,否则称为实例变量

  类变量是与类相关的,公共的属性

  实例变量属于每个对象个体的属性

  类变量可以通过 [类名.类变量名]  直接访问

类方法小结

  类方法属于与类相关的,公共的方法

  实例方法属于每个对象个体的方法

  类方法可以通过 [类名.类方法名]  直接访问

类的成员方法(函数)

1、方法的参数列表可以是多个,参数列表可以是多个,并且数据类型可以是任意的类型int float double char..

      访问修饰符 返回数据类型 函数名(参数列表){

            语句; //函数主体

      }

2、方法可以没有返回值,返回类型可以是任意的数据类型(int,float,double,char..)也可以没有返回值void表示没有返回值

      访问修饰符 返回数据类型 函数名(形参列表){

            语句; //函数主体

      }

 

static修饰与非static修饰的区别

 

static、非private修饰

 非static、private修饰

属性

类属性、类变量

实例属性、实例变量

方法

类方法

实例方法

调用方式

类名.属性

类名.方法()

对象.属性

对象.方法()

对象.属性

对象.方法()

归属

单个对象

 

         在加载类的过程中,先完成静态变量的分配,在执行静态块两者在创建对象之前执行;

    ◆类属性和类方法可以通过类名和对象名访问,实例属性和实例方法只能通过对象名访问

    ◆类属性只能访问类属性和其他类方法;

    ◆静态方法中不能使用this和super关键字;

    ◆在类中可以定义static变量,在方法里不可以定义static变量,也就是说,类变量不能是局部变量;

    ◆构造方法没有返回值类型,,如果有,则不是构造方法,而是和构造方法同名的成员方法

10、封装:封装的实质就是将类的状态信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

步骤:

  1.修改属性的可见性,

  2.设置setter和getter方法,

  3.设置属性的存取限制。

    ●好处:隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便的加入存取控制语句,限制不合理操作。

封装是面向对象的三大特性之一,就是将类的状态信息隐藏在内部,

不允许外部程序直接访问,

而是通过该类提供的方法来实现对隐藏信息的操作和访问;

封装的好处:

        只能通过规定方法访问数据

        隐藏类的实现细节

        方便加入控制语句

        方便修改实现

        

java提供四种访问控制修饰符号控制方法和变量的访问权限:

  1、公开级别:用public修饰,对外公开,可以被同一个项目中的所有类访问具有项目可见性,这是最大的访问权限;

  2、受保护级别:用protected修饰,对子类和同一个包中的类公开,可以被同一个包中的类访问,被同一个项目中不同包中的子类访问;

  3、默认级别:没有修饰符号,向同一个包的类公开,成员变量和方法只能被同一个包里的类访问,具有包可见性;

  4、私有级别:用private修饰,只有类本身可以访问,不对外公开,成员变量和方法只能在某定义的类中被访问,具有类可见性;

四种访问级别的访问范围:

访问级别

访问控制修饰符

同类

同包

子类

不同包

公  开

Public

受保护

Protected

默  认

没有修饰符

私  有

private

11、this关键字:

            

 

this的用法:

1、表示对当前对象的引用;

2、表示用类的成员变量,而非函数参数,注意在函数参数和成员变量同名是进行区分,其实这是第一种用法的特例,比较常用;

3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。注:只能引用一个构造方法且必须位于开始!

  

  

注:类方法指的静态方法,不能使用this。

    在构造方法内调用其他构造方法,this(),super()都要放在第一位。

this关键字属于调用(即调用具体方法、属性)的发起者,当类实例化时,调用者就是指的具体的实例对象,当没有实例化对象时,则是类本身调用

12附加:

一个Java文件(.java)中可以包含多个类,但是只能包含一个公共类(public),这个公共类名与Java文件名要保持一致;

创建对象不一定非要通过new关键字;(见下面详解)

  ◆java中实例化对象是为了更好的调用,类是为了定义,而对象是实体,正确的是把类实例化为对象并调用方法,

  ★java中就有创建实例化对象的五种方式

    1、用new语句创建对象,这是最常见的创建对象的方法。

    2、通过工厂方法返回对象,如:String str = String.valueOf(23);

    3、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。

      如:Object obj = Class.forName("java.lang.Object").newInstance();

    4、调用对象的clone()方法。

    5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。

属性可以是简单变量,也可以是一个对象。对象中并非必须有属性和方法,可以只有属性,也可以只有方法;

对象被赋值后,只与当前对象有关系。和其他对象没有关联。

●JAVA是一种强语言类型;

类的属性可以被赋值,方法也可以有具体实现;

面向对象优点:增加代码复用性、有利于信息隐藏、便于在程序中模拟现实中的实体、与人类思维习惯一致、提高程序的可维护性和安全性;

封装的优点:可增强数据的访问限制,降低各模块之间的依赖程度,也可以提高代码的复用程度,增强程序的可维护性;

封装的作用:在面向对象中封装是指隐藏对象的属性和实现的细节,仅对外提供公共访问方式。

在类定义中用private关键字来隐藏属性。

是用private把类的细节与外界隔离起来,从而实现数据项和方法的隐藏,而要访问这些数据项和方法唯一的途径就是通过类本身,

类才有资格调用它所拥有的资源(方法,数据项属性等等)。所以第一个好处就是数据的安全性提高了。

是通过隐藏隔离,只允许外部对类做有限的访问,开发者可以自由的改变类的内部实现,而无需修改使用该类的那些程序。

只要那些在类外部就能被调用的方法保持其外部特征不变,内部代码就可以自由改变,各取所需,利于分工。

就是提高了代码的重用性,封装成工具类以后能够减少很多繁琐的步骤

类是对象的抽象,类是对象的模板,对象是类的具体,是类的实例。

类中可以定义属性(类的属性描述了类所具有的特征)和方法,

在建立对象时,即是对类的实例化,对象的行为和属性由类来决定,即对象的行为和属性被封装在类中 。

在Java中,定义一个类使用关键字class,而创建类的对象则使用new关键字。

function一般是用在Java Script中去定义函数。

#define 关键字是C语言中宏定义关键字,

dim则是VB语言中定义变量的关键字。

●Java中类的创建方式是: 访问修饰符 class 类名{ }

实例方法可以调用本类的方法,不能调用其他类的实例方法,

但不一定可以调用父类或其他类的方法,因为在其他的方法中可能是私有的,访问修饰符是private或protected,static方法等,不可以直接调用;

枚举指由一组固定的常数组成的类型。枚举也可以像一般的类一样添加方法和属性,可以为它添加静态和非静态的属性或方法。

创建类的步骤:创建类时必须有类名,使用class关键字,使用.访问对象的属性和方法


非静态的可以访问静态的,静态的不可以访问非静态的;

输出静态变量的值,可以通过类名调用,也可以通过对象调用;

在构造方法和普通方法中能使用 this.静态变量但是在静态变量中不能使用;

能够在方法中使用的也可以是局部变量也可以是成员变量。

修饰实例变量要用public,成员变量会有默认的初始值,可以不用给;

构造方法名必须和类名一致,并且没有返回值,构造方法是在创建对象时调用,对其进行初始化工作,

构造方法一般使用public修饰,但在单例模式中,也可以使用private修饰

使用对象的属性形式是:对象.属性,

使用对象的方法形式是对象.方法名(),

用来描述对象动态特征(行为)的一个动作序列是对象的方法。

使用JAVA封装的步骤:

封装的步骤:

 

 

Java OOP——第一章 对象和封装的更多相关文章

  1. [Java编程思想] 第一章 对象导论

    第一章 对象导论 "我们之所以将自然界分解,组织成各种概念,并按其含义分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来--除非赞成这个协定中规定的有 ...

  2. 20190813 On Java8 第一章 对象的概念

    第一章 对象的概念 抽象 Alan Kay 总结了对象的五大基本特征 万物皆对象. 程序是一组对象,通过消息传递来告知彼此该做什么. 每个对象都有自己的存储空间,可容纳其他对象. 每个对象都有一种类型 ...

  3. “全栈2019”Java多线程第一章:认识多线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. “全栈2019”Java异常第一章:什么是异常?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  5. JAVA 入门第一章(语法基础)

    本人初学java 博客分享记录一下自己的学习历程 java我的初步学习分为六章,有c和c++的基础学起来也简便了很多. 第一章 语法基础 第二章 面向对象 第三章 常用工具类 第四章 文件操纵 第五章 ...

  6. Upgrading to Java 8——第一章 Lambda表达式

    第一章 Lambda表达式 Lamada 表达式是Java SE 8中最重要的新特性,长期以来被认为是在Java中缺失的特性,它的出现使整个java 语言变得完整.至少到目前,在这节中你将学习到什么是 ...

  7. 数据结构与算法 java描述 第一章 算法及其复杂度

    目录 数据结构与算法 java描述 笔记 第一章 算法及其复杂度 算法的定义 算法性能的分析与评价 问题规模.运行时间及时间复杂度 渐进复杂度 大 O 记号 大Ω记号 Θ记号 空间复杂度 算法复杂度及 ...

  8. java OOP第二章_封装

    一. 封装: 属性通过private访问修饰符将其设置为私有的,只有当前类中可以访问,同时提供通过public访问修饰符的公共方法可以给任何类中访问. 通常针对属性提供公共的setter方法进行赋值, ...

  9. Java编程思想(第一章 对象入门)总结

    面向对象编程(oop) 1.1抽象的进步 所有编程语言的最终目的都是提供一种“抽象”方法.   难点是 在机器模型(位于“方案空间”)和实际解决问题模型(位于“问题空间”)之间,程序员必须建立起一种联 ...

随机推荐

  1. CKRule业务规则管理系统部署说明

    1.   程序包说明 软件是使用WinForm开发的,包含服务端和客户端,服务端部署在IIS上面,客户端可以在已经安装.Net4.0的windows上面运行. 1.1.  服务端程序包 CKBrmsS ...

  2. python随机生成手机号码

    一句话生成电话号码random.choice(['139','188','185','136','158','151'])+"".join(random.choice(" ...

  3. Hadoop ->> Name node/Data node和Job tracker/Task tracker的区别

    刚好看到关于Name node/Data node和Job tracker/Task tracker的解释,一开始有点混淆,以为说Job tracker必须运行在Name node上,他们俩有依赖或者 ...

  4. JSP-Servlet中文乱码

    客户端 get 方法时 出现乱码: 解决办法: String str1 = request.getParameter("stuname"); String str = new St ...

  5. CSS z-index的用法

    理清 position及z-index的用法: static :  无特殊定位,对象遵循HTML定位规则absolute :  将对象从文档流中拖出,使用left,right,top,bottom等属 ...

  6. IOS JPush 集成步骤(极光远程推送解决方案,支持android和iOS两个平台)

    ●  什么是JPush ●  一套远程推送解决方案,支持android和iOS两个平台 ●  它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量.开发复杂 度 ●  更多的信息,可 ...

  7. sql server 数据库还原后sa连接不上原因

    手动创建了一个同名数据库,然后还原以前或者别人的备份,还原虽然成功了,但是在VS中连接不上,原因可能是: 数据库的所有者中没有添加sa,方法即在数据库名上右击,然后选择文件,在所有者中添加上sa,应该 ...

  8. W5100与MCU的连接方式

    W5100与MCU的连接方式 W5100与MCU的连接方式主要有直接总线连接.间接总线连接.SPI总线连接这三种连接方法,不同的连接方法适应于不同的场合,应该按需选择最恰当的连接方式. 1)直接总线连 ...

  9. 【BZOJ1171】大sz的游戏(线段树+单调队列)

    点此看题面 大致题意: 有\(n\)个点,两点间最大通讯距离为\(L\).已知除\(1\)号点外第\(i\)个点能够发出和接收的信号区间\([l_i,r_i]\)以及到\(1\)号点的距离\(dis_ ...

  10. HDU 1521 指数型母函数

    方法一: DFS 方法二:生成函数 每个数可以重复一定次数,求排列组合数,这是裸的指数型生成函数: #include <bits/stdc++.h> using namespace std ...