一:软件出现的目的

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. django之集成第三方支付平台PaysAPI与百度云视频点播服务接入

    PaysAPI直接查看接口文档:https://www.paysapi.com/docindex,比较简单 百度云视频点播服务接入: 1. 准备工作:百度云的示例:http://cyberplayer ...

  2. linux 权限命令行 xshell 切换用户

    一. 权限命令行 两种方式. 1.1 chown -R 指定的用户名, 权限的文件/文件夹 赋予这个用户的权限读写. /*1.0 权限命令行 1. chown -R 指定的用户名 权限的文件/文件夹 ...

  3. HowToDoInJava Spring 教程·翻译完成

    原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 Spring 5 Spr ...

  4. NOIP2020 部分简要题解

    C 首先考虑 \(n = 2\) 怎么做. 可以发现的是我们一定要借助空柱子 \(n + 1\),并且两个柱子都必须要移动. 注意到此时本质上就是将两种球分类,于是我们考虑能否将一个柱子上两种颜色分开 ...

  5. Cell的重用原理

    iOS设备的内存有限,如果用UITableView显示成千上万条数据,就需要成千上万个UITableViewCell对象的话,那将会耗尽iOS设备的内存.要解决该问题,需要重用UITableViewC ...

  6. PHP中英文混合字符串处理

    转载请注明来源:https://www.cnblogs.com/hookjc/ function cut_str($string, $sublen, $start = 0, $code = 'utf- ...

  7. SpringBoot+Dubbo+ZooKeeper+Maven入门实践

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11798626.html 注*** 本实例为仅适合初学者,关于dubbo和springboot以 ...

  8. 03并发编程(多道技术+进程理论+进程join方法)

    目录 03 并发编程 03 并发编程

  9. swoole错误“Uncaught Error: Class 'swoole_server' not found”的解决办法

    如果你在执行swoole对应文件时,报下面的错误, PHP Fatal error: Uncaught Error: Class 'swoole_server' not found in /mnt/w ...

  10. 6、Linux基础--文件类型、属性信息、创建用户与用户组

    笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...