一:软件出现的目的

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. python项目中 ,open() 方法, 如何读取json文件的位置。

    一 copy 目标文件绝对路径的URL. 固定在你电脑上的路径.简单好用.

  2. JavaWeb基本概念及web服务器

    1.基本概念 1.1.前言 web开发: web,网页的意思,www.baidu.com 静态web html,css 提供给所有人看的数据始终不会发生变化! 动态web 淘宝,几乎是所有的网站: 提 ...

  3. eslint规则详解

    { // 环境定义了预定义的全局变量. "env": { //环境定义了预定义的全局变量.更多在官网查看 "browser":true, "node& ...

  4. bind方法源码

    'use strict'; module.exports = function bind(fn, thisArg) { return function wrap() { var args = new ...

  5. CF1574F Occurrences

    考虑什么样的串是合法的. 直接考虑比较抽象,考虑具象化这个问题. 容易发现一个字符串的限制就相当于如果出现了其中一个字符 \(a_i = c\),那么 \(s\) 中 \(c\) 前 \(i - 1\ ...

  6. bom-client

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Java线程--CopyOnWrite容器使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11871602.html Java线程--CopyOnWrite容器使用 CopyOnWrit容 ...

  8. k8s之list-watch机制、节点调度以及亲和性

    k8s之list-watch机制.节点调度以及亲和性 目录 k8s之list-watch机制.节点调度以及亲和性 一.list-watch机制 1. list-watch介绍 2. list-watc ...

  9. webfunny前端系统:如何解决警报设置触发常见问题

    大家好,经常会有小伙伴在使用webfunny监控系统中,遇到无法触发警报的问题,其实都是一些配置上的疏漏,在这里给大家总结一下: PS:只要消息中心里有警报,则说明触发机制没有问题.其他方式没有触发, ...

  10. Java数据库连接池--DBCP浅析.

    一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出.拓机.数据库连接是一种关键的有限的昂贵 ...