您的位置:首页 > 编程语言 > Java开发

面向对象(OO)初步认识

2016-09-08 18:34 246 查看
每个人在了解JAVA是什么样的编程语言的过程中一定都听说过这样一句话,万物皆对象。在初学JAVA基础语法的过程中,我们都做过一个个题目练习,这种练习都是围绕则要解决的问题的过程去书写的,在学习完成JAVA基础语法后,今天总结下个人初步对JAVA的精髓面向对象,及object to object.

结构话和OO的区别

1. 在结构化编程中,程序围绕解决的任务来设计

2. 面向对象编程中,程序围绕这问题域中的对象来设计

什么是对象

1. 对象是存在的具体的实体,具有明确特征和行为

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

项目当中那些东西需要我们关注,项目的需求是什么,确定需要关注的对象的特征和行为

什么是面向对象

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

2.人在接触新鲜事物接受的过程:接触新事物->有什么特征->干什么用->怎么使用

3.对象的产生一定是数据封装的结果

什么是类

1. 把相同的特征和行为归纳其他就是一个类

2.类是就有相同属性和行为的一组对象的集合

3. 在软件系统中,我门用类来茉莉现实生活中的实体

4.类是对象的抽象,对象是类的实例

在JAVA编程的过程中,需要使用到new关键字为类创建一个对象实例,只有new后,对象才在内存空间真实存在

new 关键字创建类的实例,即对象

对象的属性:属性是对象的特征,每个对象都有自己独立的属性值,一个对象的属性发生变化,不会影响另外一个对象的属性,属性是封装在对象中的变量,是对象的成员,属性也叫成员变量

//创建一个类
public class Man {
//创建一个Man类,具有name,age,job三种成员变量属性
public String name;
public int age;
public String job;

public static void main(String[] args) {

int x = 8;// 基本类型,放的X=8
// 创建类的实例,及对象
// man是引用类型,man放的是对象的引用地址即放的对象Man的地址,里面存放name,age,job三个数据 ,man.name表示Man地址你存放的name
Man man = new Man();
man.name = "小强";
man.age = 18;
man.job = "木匠";
System.out.println(man.name + " " + man.age + " " + man.job);
//new 关键字创建类的对象实例,虽然两个对象都是new Man,具有相同属性类型,其实他们指的两个人,一个叫man 一个叫man1
Man man1 = new Man();
man1.name = "光头强";
man1.age = 40;
man1.job = "伐木工";
System.out.println(man1.name + " " + man1.age + " " + man1.job);
//此段代码表明,修改对象实例的属性,只会修改对应的对象,而不会对同一个类的其他对象造成影响
man1.job="铁匠";
System.out.println(man.name + " " + man.age + " " + man.job);
System.out.println(man1.name + " " + man1.age + " " + man1.job);
}

}


需要注意对象引用类型空指针null 异常

1. null表示一个变量没有指向任何对象,也就是没有存放任何对象的地址,对null进行属性和方法的调用,会抛出空指针异常。

2.如果一个对象没有被变量所指向,那么该对象就符合垃圾回收的条件。

空指针异常

Exception in thread "main" java.lang.NullPointerException


对象的引用

对象的引用存放的是地址,通过地址查找存放地址内的属性值,所有一处修改地址内的属性值,其他引用这个对象的引用类型里的属性值都会变化

静态变量,static

1.静态变量是成员共享的,静态变量改变后,所有共享这个属性的对象内的属性值都会发生变化,静态成员变量为同一个类的对象共享属性

2.由于静态变变量是手游对象共享的变量,可以通过 类名.静态变量名 的方式访问

3. 静态变量也要类变量

下面一段代码演示了成员变量与静态变量(类变量)的特点

public class ClassWork_2 {
public String name;
public int age;
public String job;
//静态变量
public static String earth;

public static void main(String[] args) {
ClassWork_2 c1=new ClassWork_2();
c1.age=18;
c1.job="销售员";
c1.earth="污染地球";

ClassWork_2 c2=new ClassWork_2();
c2.age=15;
c2.job="修理工";
c2.earth="保护地球";
//引用类型地址的传递
ClassWork_2 c3=new ClassWork_2();
c3=c2;
System.out.println(c1.age+" "+c1.job+" "+c1.earth);
System.out.println(c2.age+" "+c2.job+" "+c2.earth);
System.out.println(c3.age+" "+c3.job+" "+c3.earth);
}

}


输出结果



静态变量和成员变量的区别

1. 成员变量是对象的组成部分,每个对象有不同的成员变量,当一个对象成员变量改变后,不会影响其他对象

2. 静态变量是独立在对象之外的,很多对象共享一个静态变量,当静态变量发生改变后,会影响所有对象

3. 静态变量加载的时机在对象之前,而成员变量随对象产生而产生

4. 成员变量的访问只能通过对象.的方式进行访问,静态变量可以通过对象.和类名.的方式访问

对象数组

对象数组不能直接复制,因为数组初始话为null,会报空指针,需给对象赋值,然后对象的引用(地址)传递给数组的引用(地址)

以下代码演示了就我个人的对象数组赋值思路

import javax.swing.JOptionPane;

public class ArrayTest {

public static void main(String[] args) {
//方法1 创建一个Man对象,引用为m
Man m = new Man();
m.age = 18;
m.job = "厨师";
m.name = "张三";
Man Array[] = new Man[3];
// 把m的地址给Array的第一个数据地址
Array[0] = m;
System.out.println(Array[0].age + " " + Array[0].job + " " + Array[0].name);
//方法2new对象赋值
Array[2]=new Man();
Array[2].age=18;
Array[2].job="xxx";
Array[2].name="xxx";
//方法3循环赋值需全部去掉数组中的null
for(int i=0;i<Array.length;i++){
//Array[]数组中的数全面为m
Array[i]=new Man();
}
Array[2].name="xxx";
System.out.println(Array[1].name);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息