码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象编程

时间:2017-05-23 10:18:10      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:mono   面向对象   lib   port   name   class   set   ora   形参   

6. 面向对象编程

1. 面向对象概念

阅读面对对象程序设计,回答以下问题:

1. 什么是面向对象编程
2. 什么是对象和类
3. 什么是类的封装
4. 什么是类的继承
5. 什么是类的多态

1.1 面向对象编程的概念

模拟人类的思维过程,一切皆对象

1.2 对象和类

1.2.1 对象

对象的两个要素:

  1. 属性:

    用于描述对象静态特性(结构特性)的数据项
    比如描述一个人的姓名、性别、年龄、出生日期等属性
    
  2. 方法:

    用于描述对象动态特性(行为特性)的操作系列
    比如人都具有工作、学习等行为特性
    

对象可以表示:

对象可以是看的见、摸的着的有形的实体,如计算机、飞机、汽车等等;
对象也可以表示人或组织所起的作用,如治病、教学、生产等; 
对象还可以表示事件,如各种事故、演出、战斗、开会等; 
对象更可以表示规则,如各种专家规则、约束条件、正则表达式等

1.2.2 类

把事物归纳、划分成类是我们认知世界常用的方法
分类的依据的原则是抽象,也就是忽略事物的非本质特征,只注意事物的本质特征
找出事物的共性并将具有共同性质的事物划分为同一个类

技术分享

同一类中的对象有相同的属性(也称为成员变量,它描述该类的静态特性或结构特性)
同一类中的对象有相同的方法(也称服务,它描述该类的行为特性或动态特性)
同一类中的对象遵守相同的语义规则。(共同的约束或规则)

技术分享

1.2.3 类和对象的关系

技术分享

1.3面对对象编程原则

1.3.1 封装

对象将数据和数据的操作打包为一个不可分割的最基本模块,使得只有该类的方法可以操纵和改变这些数据,这就是封装
封装是允许有选择地隐藏类中的属性和方法

1.3.1 继承

继承(重用)现有类生成新类

继承关系:

父类是有其它类继承其行为的类
继承父类的类称为子类

技术分享

1.3.3 多态

多态是建立在继承基础之上的

不同的子类继承自同一个父类,父类的用一个方法以不同方式实现 技术分享


2. 面对对象程序设计

2.1 创建类

类就是对象的模板(template ),是对象的抽象。
而对象就是类的一个实例(instance)
类包含:属性;方法
数据成员是通过方法(函数)访问的

2.1.1 类定义

Java使用关键字class定义一个类 定义类时,用属性(成员变量)定义类的静态特征,用方法来定义类的行为特征。

修饰符 class 类名{
  变量类型 变量名;
  …
  变量类型 变量名;
  方法修饰符 返回类型 方法名(形参1,形参2,…){
     //方法体
  }
  …
  方法修饰符 方法名(参数1,参数2,…){
    //方法体
  }
} 

例如:

public class Dog {
    int age;
    String name;
    String color;

    void barking() {
    }

    void sleeping() {
    }
}

2.1.2 定义属性(变量)

语法格式:

    修饰符 变量类型 变量名;
    修饰符 变量类型 变量名 = 变量值;
    private int row = 5;

类中的属性有:

  1. 局部变量

    在方法、构造方法或者语句块中定义的变量被称为局部变量。
    变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
    
  2. 成员变量

    成员变量是定义在类中,方法体之外的变量。
    这种变量在创建对象的时候实例化。
    成员变量可以被类中方法、构造方法和特定类的语句块访问。
    
  3. 类变量

    类变量也声明在类中,方法体之外,但必须声明为static类型。
    
  4. this关键字:

    //构造方法有三个参数
    public Dog(int age,String name,String color){
        //this代指当前对象,这样区分了局部变量和对象变量同名的问题
        this.age = age;
        this.name = name;
        this.color = color;
    }
    

    作用:表示对当前对象的引用;

    表示类的成员变量,而不是方法中的成员变量,在两者同名时进行区分,最常用的this使用方式;

    注意:this不能在static方法中使用

2.1.3 定义方法

语法格式:

修饰符 方法返回类型 方法名(形参1,形参2,…){
    方法体;//语句
}
例如:
public int add(int i,int j) {
    return i+j;
}

构造方法

构造方法是类的特殊方法,与类同名且没有返回值
对象的创建通过构造方法实现,构造方法的功能是完成对象的初始化,当类实例化一个对象会自动调用构造方法
类中必定有构造方法,若没有则系统自动添加一个无参无方法体的空构造方法

例如:

public Dog(int a,String n,String c){
    age = a;
    name = n;
    color = c;
}

2.1.4 定义类的属性和方法

  1. 静态变量

    不管创建了类的多少实例,整个类中静态变量的副本只有一个。
    引用静态变量的方法:通过类的名称,通过引用类的任一实例
    

    例如:

    //静态变量
    static int numOfLegs = 4;
    
  2. 静态方法

    静态方法只能访问静态成员,实例方法可以访问静态和实例成员
    之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象
    类方法没有this
    

    例如:

    //定义静态方法,获取腿的数量
    public static int getLegs(){
        return numOfLegs;
    }
    

2.2 创建对象

2.2.1 创建对象的格式

对象是类的实例化

Java中使用new关键字来创建对象

创建对象有两步:

    声明:声明一个对象,包括对象名称和对象类型
    实例化:使用关键字new来创建一个类的对象。

格式:

类名 对象名 = new 类名(); 

例如:

public class Dog {
    int age;
    String name;
    String color;

    //构造方法有三个参数
    public Dog(int a,String n,String c){
        age = a;
        name = n;
        color = c;
    }

    public static void main(String[] args) {
        //生成Dog类的一个对象,并按照构造方法参数表传入参数值
        Dog wangcaiDog = new Dog(1,"Wangcai","brown");
    }
}

2.2.2. 关键字new的作用

创建一块内存空间并将内存空间分配给创建的对象

将对象的属性成员变量全部初始化,并执行构造方法

类成员变量初始值:

Java保证了在任何代码使用该对象之前,已将对象中的状态信息初始化为缺省值

技术分享

2.3 属性和方法的调用

2.3.1. 对象的属性和方法调用:

格式:
对象.成员变量
对象.方法名()

例如:

//访问对象的变量
int age = wangcaiDog.age;
//调用对象的方法
wangcaiDog.barking();

2.3.2 类的属性和方法调用

格式:
类.成员变量
类.方法名()

例如:

    //调用Dog类的属性
    int numOfLegs = Dog.numOfLegs;
    //调用Dog类的静态方法而不需要生成一个对象来调用
    wangcaiDog.getLegs();

2.4 类的访问控制

Java中一般把属性数据和一些私有的方法声明为private或者protected类型,从而使这些数据或者方法不能被外部修改或调用。

只有我们希望被外部直接访问的属性数据和方法才声明为public。

如果在声明数据和方法时不写是private、protected还是public,那么类型为默认。

技术分享

2.5 对象的比较

两个对象相比较,一定要注意是比较值还是比较地址

    //生成Dog类的一个对象,并按照构造方法参数表传入参数值
    Dog wangcaiDog = new Dog(1,"Wangcai","brown");
    Dog xiaoheiDog = new Dog(1,"Wangcai","brown");
    System.out.println("两个对象的比较结果为:"+(wangcaiDog==xiaoheiDog));

2.6 对象的销毁

对象在创建的时候,系统会分配内存空间给新建的对象,当对象被销毁,内存空间会归还给系统,该对象就不可以再继续使用了。

    //生成Dog类的一个对象,并按照构造方法参数表传入参数值
    Dog wangcaiDog = new Dog(1,"Wangcai","brown");
    Dog xiaoheiDog = new Dog(1,"Wangcai","brown");
    System.out.println("两个对象的比较结果为:"+(wangcaiDog==xiaoheiDog));
    //销毁对象,将对象置为空
    wangcaiDog = null;

 

面向对象编程

标签:mono   面向对象   lib   port   name   class   set   ora   形参   

原文地址:http://www.cnblogs.com/jeknight/p/6892598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!