一:软件出现的目的

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

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

编程思维:  使用面向对象的思想(描述)面向对象的世界     (符合人类的思维习惯)

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

1:符合人类的思维习惯

2:交流更加流畅

2:可维护性高(方便修改代码)

3: 提高设计和开发效率

三:面向对象的三大特性

     1封装性:
           所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
    2继承性
          所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;
   3多态性
          所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

四:从现实中抽象出类分三步:

1. 找出它的种类     2. 找出它的属性     3. 找出它的行为

在编程中的应用:

   1:找出名词确定类、属性    eg: (确定类) class Dog{}       (确定属性)String name="小黑"; String Strain="拉布拉多"

2:找出动词确定方法           eg:(进食方法)   public void eat (){ //省略代码 }

3:剔除与业务无关的属性和方法

五:实现封装的步骤

   1画类图: 

类图的作用:1:用于分析和设计“类”

2:直观,容易理解

  2:封装的概念:

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

3编写代码实现封装

1:修改属性的可见性                                        (设为private)

2:创建公有的getter/setter方法                          (用于属性的读写)

3:在getter/setter方法中加入属性控制语句      (对属性值的合法性进行判断)

【代码示例】

 1 public class Dog {
2 private String name;//昵称
3 private int health;//健康值
4 private int love;//亲密度
5 private String strain;//品种
6
7 public Dog() {
8 }
9
10 public String getName(){
11 return name;
12 }
13 public void setName(String name){
14 this.name=name;
15 }
16 public int getHealth(){
17 return health;
18 }
19 public void setHealth(int health){
20 if(health>100||health<0){
21 this.health=40;
22 System.out.println("健康值应该在0到100之间,默认值是40");
23 }else{
24 this.health=health;
25 }
26 }
27 public int getLove(){
28 return love;
29 }
30 public void setLove(int love){
31 this.love=love;
32 }
33 public String getStrain(){
34 return strain;
35 }
36 public void setStrain(String strain){
37 this.strain=strain;
38 }
39 public void print(){
40 System.out.println("宠物的自白");
41 System.out.println("我的名字叫"+name+",健康值是"+health+",和主人的亲密度是"+love+",我是一只"+strain);
42 }
44 }

4:封装的好处:

(1):隐藏类的实现细节

(2):只能通过规定方法访问数据

(3):方便加入控制语句

           (4):方便修改实现

  六:访问成员变量及方法

     1:static的作用:

              (1)static 可以用来修饰属性,方法和代码块,称为静态变量,静态方法和静态代码块

(2)由static 修饰的属性和方法,可以直接通过类名.属性 或 类名.方法来进行调用

(3)由static 修饰的代码块,在运行时,程序默认自动调用,且优先于构造方法和普通方法;若类中有多个代码块,则按照静态代码块顺序依次执行

     2:final的作用:

(1)final 可修饰类,属性,和方法

(2)当final 修饰一个类时,该类成为最终类,无法被继承。简称为“断子绝孙类”。

(3)当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。

(4)当final修饰属性(变量)时,则该属性为常量,其固定值不变,该值无法修改

【示例】

JAVA的对象和封装及static与final的用法(详解)的更多相关文章

  1. java中的Static、final、Static final各种用法详解

    前言 对Static.final.Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从 ...

  2. Java中static变量作用和用法详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  3. static、final和finalize详解

    一.static 修饰符 数据共享 成员变量(实例变量)和静态变量(类变量)的区别 两个变量的生命周期不同 成员变量随对象的创建而存在,随对象被回收而释放 静态变量随类的加载而存在,随类的消失而消失 ...

  4. JAVA面对对象(三)——Super、static、final关键字

    Super 使用super关键字可以直接调用父类中的构造方法.属性.普通方法 super调用父类构造方法的操作,与this调用构造方法一样,语句必须放在子类构造方法的首行 public class P ...

  5. Java多线程之syncrhoized内置互斥锁的用法详解

       转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827547.html    解决并行冲突最有效的方法就是加同步锁,主要有以下几种方法:   1:动态方法 ...

  6. Java面试题_第一阶段(static、final、面向对象、多线程、集合、String、同步、接口、GC、JVM)

    1.1 简述static和final的用法? static:修饰属性,方法,代码块 (1)静态属性:也可叫类变量  类名.属性名  来访问 (共有的类变量与对象无关,只和类有关) 注意:类中的实例变量 ...

  7. ava下static关键字用法详解

    Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static ...

  8. Java语言Socket接口用法详解

    Socket接口用法详解   在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Serve ...

  9. Java Enum用法详解

    Java Enum用法详解 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举 ...

随机推荐

  1. Jquery Validate 使用记坑

    在使用jquery validate 的时候 使用的有remote 需要在页面初始化的时候调用, 这样在文本框输入完的时候就会调用远程方法验证,否则,在最后表单验证的时候会忽悠remote的返回值验证 ...

  2. 如何在pyqt中实现丝滑滚动字幕

    滚动字幕的视觉效果 网上有很多博客介绍了滚动字幕的实现方法,懂得都懂,大部是 Ctrl C + Ctrl V,效果还很差,最后还是得靠自己.主要思路就是通过定时器定时刷新+绘制两段完整的字符串来达到 ...

  3. shell脚本检查域名证书是否过期

    最近公司的域名准备过期了,防止用户访问的时候出现异常,所以最近我们准备替换相关网站证书为最新的. (一般HTTPS证书有效期为1年,证书过期后或者该证书不是该域名的有效证书时,在浏览器中访问会出现如下 ...

  4. Matplotlib 绘图秘籍·翻译完成

    原文:Matplotlib Plotting Cookbook 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅读 ApacheCN ...

  5. Centos设置网络(固定IP)

    简介 设置为桥接模式,即将虚拟机的虚拟网络适配器与主机的物理网络适配器进行交接,虚拟机中的虚拟网络适配器可通过主机中的物理网络适配器直接访问到外部网络. 配置 虚拟机设置为桥接模式 进入网络配置文件, ...

  6. ForkJoinPool简单使用

    简介 ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个"小任务",把多个"小任务"放到多个处理器核心上并行执行, ...

  7. PHP扩展开发编译环境的搭建

    PHP允许使用扩展的方式,直接使用C语言开发PHP的功能,由于编译的问题,很多底层和框架的基础工作如果用PHP必然会带来额外的开销,降低系统的吞吐量,必然yaf就是这样的思路,把框架封装在扩展里,让系 ...

  8. php curl发送post get请求

    POST: function curl_post_https($url, $data, $header){ // 模拟提交数据函数 $curl = curl_init(); // 启动一个CURL会话 ...

  9. Mysql Json函数之搜索 (三)

    本节中的函数对JSON值执行搜索操作,以从其中提取数据,报告数据是否在其中的某个位置或报告其中的数据的路径. JSON_CONTAINS(target, candidate[, path]) 通过返回 ...

  10. axios ajax fetch 区别以及优缺点

    将jQuery的ajax.axios和fetch做个简单的比较,所谓仁者见仁智者见智,最终使用哪个还是自行斟酌 1.jQuery ajax $.ajax({ type: 'POST', url: ur ...