面向对象

来源:互联网 发布:8级胖子升级数据 编辑:程序博客网 时间:2024/06/07 09:19
1. 对象
    ① 概念:计算机中的对象:客观复杂事物在计算机中的表现形式。
    ② 对象的组成:对象的属性:代表对象有什么特征
               对象的方法:代表对象能做什么,具有什么功能。
    ③ 对象的描述:计算中用类描述对象,描述对象有哪些属性和哪些方法(类是对象共性的抽象)。
2. 类和对象的关系:
① 类是对象的模板
② 对象是类的实例
3. 类的组成
① 属性:称为成员变量
      a. 语法:数据类型 属性名;
           数据类型 属性名=值;
   
  b. 位置:类以内,方法以外。
  c. 成员变量具有默认值:(同数组)
整数: 0
小数: 0.0
布尔: false
字符: 空字符('\u0000')
对象: null
  d. 作用范围:至少在本类中有效。
  e. 成员变量可以和局部变量名字相同,但是当命名冲突,
     局部变量优先被使用。
 
        成员变量和局部变量的区别????

          成员变量                    局部变量
位置:   定义在类以内,方法以外     定义在方法内部
作用范围:至少在本类有效              定义位置开始,到定义它的代码块结束
默认值:    具有默认值                没有默认值,必须先赋值后使用
命名:    成员变量可以和局部变量命名   在重合的作用范围内,不允许命名冲突。
          冲突,局部变量优先
  
    ② 方法:称为成员方法
      a. 语法:
       函数语法:public static 返回值类型 函数名(形参列表){
                  //函数的实现...
             }
           方法语法:public 返回值类型 方法名(形参列表){
                  //方法的实现.....
             } 
    注意:方法的定义不再需要加static,static语法后面课程具体讲解。
      b. 位置:类以内,其他方法以外。
  c. 方法的定义分为方法的声明和实现。
      I.方法的声明:
        组成:修饰符 返回值类型 方法名(形参列表)异常
        注意:一个方法的修饰符1~n个,而且没有位置的先后
含义:代表对象能做什么
  II.方法的实现:
                    组成:{ //方法的实现 }   
    含义:代表对象的功能如何实现。
      d. 方法的重载(overLoad):
      I. 概念:在一个类中,定义多个相同名字的方法,但是参数不同。
  II.要求:
        ① 方法名相同
② 参数列表不同(类型、个数、顺序)
        ③ 方法的返回值类型、修饰符、异常没有要求。

注意:只是形式参数名字不同,不是方法的重载。
  III. 在编译时,根据调用者传递的实际参数,确定调用哪一个方法。
              Iv.  注意:① 实际参数和形参匹配时,遵循就近向上匹配
                         ② 使用时,避免匹配混淆。
    ③ 构造方法:
a. 构造方法是一个特殊的方法。
b. 要求:① 构造方法的名字必须和类名完全一致;
         ② 构造方法没有返回值类型(连void的都没有)
     修饰符 类名(形参列表){
    //实现
}
③ 构造方法允许重载
④ 构造方法不允许手工调用
   使用:① 构造方法在创建对象时,JVM自动调用1次
         ② 如果一个类中没有定义任何构造方法,系统自动默认添加一个
    公开、无参数的构造方法;但是如果类中定义了有参数的构造
方法,则系统不会再添加公开、无参数的构造方法。
c. 位置:类以内,其他方法以外。
d. 构造方法的作用:
① 用于创建对象
② 通常给属性赋值

4. 创建对象:
    ① 语法:类名 对象名/引用名=new 构造方法(实际参数);
             
注意:根据创建对象时,构造方法中实际传递的参数,决定调用哪一个构造方法。
② 使用对象:
使用对象的属性:
给属性赋值:对象名.属性名=值;
获取属性的值:对象名.属性名

使用对象的方法:对象名.方法名(实参);
5. 对象创建的过程:
① 分配空间:给属性赋默认值
② 初始化属性:给属性赋初始数据(给属性赋值的第二次机会)
③ 调用构造方法:给属性第三赋值(给属性赋值的第三次机会)


6. this的应用
    ① 第一种用法:this. 
   a. this代表当前对象,类似于"我",用于方法(成员和构造方法)中,
      调用本类的属性或是成员方法。
   b. this.属性名:调用本类的属性
      this.方法名(实参);  调用本类的成员方法
   
  注意: this. 通常可以省略,但是当局部变量和成员变量命名冲突时,
                 必须使用this. 区分成员变量。   
② 第二种用法: this()
       a.this() :用在构造方法中,调用本类的其他构造方法。
       b. this(); :代表调用本类无参数的构造方法
      this(实参):代表调用本类的有参数的构造方法。
          注意:a. this()必须是构造方法中的第一行语句。
        b. 使用时避免递归调用构造方法。
7. 引用
    ① 引用存储对象在堆空间中的地址。
② 可以先引用,再赋值:
Worker w;
w=new Worker();
③ 以 null调用对象的属性或是方法,运行报错,错误信息:
java.lang.NullPointerException(空指针异常)
    ④ 引用之间传递的是对象的地址。
   基本数据类型之间传递是数值。

⑤ 引用可以用在形式参数、返回值、数组。

ej:

package demo20171027;
/**
 * 面向对象,this关键字在调用构造方法时:避免递归调用构造方法。所谓的递归调用就是:例如:有两个构造方法;一个构造方法在另一个中,另一个也在那个中。
 * @author Mr fage
 *
 */
public class MianXiangDuiXiang2 {
public static void main(String[] args) {
MoBan m=new MoBan("zhangsan",9999999);
System.out.println(m.name+m.age);
m.juBu("66666",999);
MoBan m1=new MoBan();
}
}
class MoBan{
String name;
int age;
public MoBan(){             //无参构造方法
this("hehe",20);
System.out.println("验证this调用本类中的成员变量和成员方法666666666666666666666");
}
public MoBan(String name,int age){
//this();                                   //在这里this调用了MoBan()构造方法
this.name=name;                                   //调用本类的成员方法
this.age=age;
this.juBu(name, age);
}
 
public void juBu(){         //无参成员方法
}
public void juBu(String name,int age ){ 
System.out.println("5555555555555555555");

}
}

原创粉丝点击