java————面向对象概念

面向对象

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);
  }
}

posted on 2018-03-31 21:36  维科  阅读(112)  评论(0)    收藏  举报