面向对象

OO:面向对象

OOP:面向对象编程

OOA:面向对象分析

OOD:面向对象设计

面向对象的特征

继承,封装,多态

什么是对象?

对象是存在的具体实体,具有明确定义的特征和行为。

万物皆对象,对象因我关注而产生。

什么是面向对象?

面向对象是一种认识事物的方式,注重对事物整体的认知,最符合人类自然的思维习惯。

什么是类?

类是具有相同属性和行为的一组对象的集合。

在软件系统中,我们用类来模拟现实生活中的实体。

类和对象的关系?

类是对象的抽象,对象是类的实例。

对象是怎么产生的?

对象的产生是数据封装的结果。

Java的数据类型分为两种:基本数据类型和引用数据类型

其中基本数据类型,在变量中存放的是具体的数据。

引用数据类型,在变量中存放的是对象的地址。分为三种。

引用数据类型是变量中存放的一个地址

类、数组、接口

垃圾回收

回收的是没有被任何变量所指向的对象。

null

表示一个变量没有存放任何对象的地址。对null值做方法或属性的调用。

会抛出 java.lang.NullPointerException(空指针异常)

static

静态变量是每个对象共享的变量,当其中一个对象改变它的值以后,会影响所有的对象。

对静态变量的访问,可以通过对象.(点)的方式访问,也可以通过类名.(点)的方式访问。

所以静态变量也称为类变量。

成员变量(属性)和静态变量的区别:

1,  成员变量是包含在对象之中的,是对象的特征。而静态变量独立在对象之外。每个对象都有成员变量,而且一个对象成员变量的变化,不会影响别的对象。但静态变量是所有对象共享的变量,它的变化会引起所有对象的变化。

2, 成员变量随着对象产生而产生。随对象销毁而销毁。而静态变量加载的时机在对象之前。常驻内存,除非虚拟机关闭,否则不会销毁。

3, 对成员变量的访问,通过对象.(点)的方式。对静态变量的访问,可以通过对象.(点)或类名.(点)的方式访问。

变量按作用域分类

按照声明的位置和作用域划分

局部变量:方法和语句块内部定义的变量(栈空间,当方法或语句块一结束,局部变量空间马上释放)

成员变量(属性):方法外部,类的内部定义的变量(堆空间,随对象产生而产生,随对象销毁而销毁)

类变量(静态变量):加上了关键字“static”(数据段,常驻内存,创建好之后,不会消失。)

使用包来组织

如果当前类所用到的类,不再同一个包中,那么需要使用import导入该类。

有两种类无需导入可以直接使用:1,java.lang.*      2,本包中的类

public  作用

如果一个类申明时,加上public,类名和文件名必须一致。该类可以跨包使用。

如果一个类申明时,采用默认修饰符(不加public),类名和文件名可以不一致,但不能跨包使用。

使用包的好处

1,  可以组织相关类。

2, 可以做到信息隐藏。

成员方法

如果在声明一个方法的时候没有使用static来修饰该方法,则这个方法是属于这个类的实例方法,要使用成员方法时必须通过创建该类的实例来使用这个方法。

实例的方法不仅可以访问类变量和常量,还可以访问实例中的变量。

静态方法

如果一个类中声明的方法被static来修饰符修饰,那么这个方法就是一个属于类的方法,使用静态时可以直接通过类名来使用,而不需要该类的实例。

类方法可以访问所在类中的类变量。

Static总结

凡是修饰了static的东西,加载时机都在对象之前。正因为如此,静态方法不能直接访问成员变量或成员方法的。

示例商品

class Product{
  public int id;
  public String name;
  public int price;
}
public class Demo1 {
  public static void main(String [] args){
    Product [] Array = new Product[3];
    for(int i = 0;i<Array.length;i++){
      String idstr =JOptionPane.showInputDialog(null,"请输入第"+(i+1)+"个商品ID");
      String namestr =JOptionPane.showInputDialog(null,"请输入第"+(i+1)+"个商品名");
      String pricestr =JOptionPane.showInputDialog(null,"请输入第"+(i+1)+"个商品价格");
      Array[i] =new Product(); //把对象放进数组里面
      Array[i].id =Integer.parseInt(idstr);
      Array[i].name =namestr;
      Array[i].price =Integer.parseInt(pricestr);
}
/*
* 这里如果要按照价格来降序,引用数组就可以做到整换
*/
for(int i = 0;i<Array.length ;i++){
  for(int j = i+1;j<Array.length ;j++){
    if(Array[i].price <Array[j].price ){
      Product s =Array[j];
      Array[j] = Array[i]; //这里就可以做到编号,名字,价格整个进行互换
      Array[i] = s;
    }
  }
}
/*
*
* 遍历数组里面每个编号,名字,价格的内容
*/
String a ="编号 商品名 价格\n";
  for(int j =0;j<Array.length ;j++){
    a += Array[j].id+" "+Array[j].name+" "+Array[j].price +" \n";
  }
    JOptionPane.showMessageDialog(null, a);
  }
}

java————面向对象概念的更多相关文章

  1. java面向对象概念1

    一.java面向对象学习的三条主线: 1.java类及类的成员:属性.方法.构造器:代码块.内部类 2.面向对象的三大特征:封装性.继承性.多态性.(抽象性) 3.其它关键字:this.super.s ...

  2. java面向对象概念2

    一.理解“万事万物皆对象”. 1.在java语言范畴中,我们都将功能.结构等封装到类中,通过类的实例化,来调用具体的功能结构. 2.涉及到java语言与前端html.后端的数据库交互时,前后端的结构在 ...

  3. Java 面向对象概念

    Interface 接口 An interface defines a protocol of communication between two objects. An interface decl ...

  4. Java面向对象-面向对象编程之基本概念

    面向对象这个概念,每本书上的说法定义很多. 我自己根据我的经验,自己归档总结了下, 所谓面向对象,就是 以基于对象的思维去分析和解决问题,万物皆对象: 面向对象经常和面向过程放一起讨论: 这里举例, ...

  5. java面向对象1-面向对象概念

    面向对象概念-类与对象的关系 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private-构造方法/构造器-this关键字-static关键字(javadoc制作工具类) -代码块 继承 ...

  6. 087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点

    087 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 01 封装的概念和特点 本文知识点:封装的概念和特点 说明:因为时间紧张,本人写博客过程中只是对 ...

  7. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  8. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  9. JAVA课程实验报告 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

随机推荐

  1. vue轮播组件及去掉路由#

    最近公司要我去实现vue知识的系统讲解,总结一番,大致需要7节课,今天大致说一下我们使用vue需要学会的基本技能.vue是一个渐进性视图渲染框架,使用vue核心是数据出发,数据一般是我们前台从后台获取 ...

  2. ACM1008

    题目:Haab日历和Tzolkin日历的转换. Maya一共有两种日历,第一种日历名为Haab,将一年分为365天,一共有19个月.其中前18个月,分别命名为pop.nozip.zotz.tzec.x ...

  3. Modbus总结

    1.概念 ①Coil和Register Modbus中定义的两种数据类型.Coil是位(bit)变量:Register是整型(Word,即16-bit)变量. ②Slave和Master与Server ...

  4. docker学习系列(一):docker 基础

    一.简介 开发当中比较麻烦的问题在于软件配置,每个人的机械以及系统都不尽相同,程序需要运行在系统当中需要配置好相应的系统以及各种依赖的组件,但是很多时候由于各种软件依赖包的版本,系统兼容性问题会导致程 ...

  5. python基础—装饰器

    python基础-装饰器 定义:一个函数,可以接受一个函数作为参数,对该函数进行一些包装,不改变函数的本身. def foo(): return 123 a=foo(); b=foo; print(a ...

  6. Dockerfile 中的 multi-stage

    在应用了容器技术的软件开发过程中,控制容器镜像的大小可是一件费时费力的事情.如果我们构建的镜像既是编译软件的环境,又是软件最终的运行环境,这是很难控制镜像大小的.所以常见的配置模式为:分别为软件的编译 ...

  7. 论文笔记(9):Multiscale Combinatorial Grouping

    本文大致脉络: 对每张图片,作者首先使用 P. Doll´ar and C. Zitnick. Structured forests for fast edge detection. ICCV , 2 ...

  8. Java微服务对UTC时间格式的处理

    一.背景 先说一下为什么要使用UTC时间.开发一个全球化的系统,服务端(Java微服务)集中部署在同一个地方,用户在全球通过浏览器.手机客户端访问.不同地区的时区是不一样的,同一个时间戳,不同的用户看 ...

  9. 用注解的方式实现Mybatis插入数据时返回自增的主键Id

    一.背景 我们在数据库表设计的时候,一般都会在表中设计一个自增的id作为表的主键.这个id也会关联到其它表的外键. 这就要求往表中插入数据时能返回表的自增id,用这个ID去给关联表的字段赋值.下面讲一 ...

  10. hidden symbol `pthread_atfork'

    gcc交叉编译时发生这种错误 /.. .../voice_demo: hidden symbol `pthread_atfork' in /opt/gcc-linaro-aarch64-linux-g ...