黑马程序员_面向对象

来源:互联网 发布:手机淘宝聊天记录消失 编辑:程序博客网 时间:2024/06/05 20:14
一、概述:
     1. 什么是对象
         常说一切都是对象。结合日常生活,对象就是指东西,比如飞机、狗狗、空气等。有形的、看不见的、具体的、抽象的都是对象。
     2.  面向对象

      首先根据客户需求象出业务对象;然后对需求迕行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装、抽象的编程思想,实现业务需求;最后通过整合各模块,达到高类聚、低耦合的效果,从而满足客户要求。

    3. 面向对象概念

  • 型(类):指一个名词概念,如:客人、菜品、厨师。
  • 用(变量):指引用具体概念实例的代词,如:某人、特价菜
  • 象(东西):具体概念的个体实例,如:张三丰是个人、一盘大盘鸡
  • 行为:方法
  • 多态:在具体情形下会发生变化的现象。例如:一只动物,可以是“一只猫”、“一只狗”,多态的。
  • 封装:仸何对象实例都是尽可能封减少暴露,它的实现细节对你是透明的。
  • 继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。
    4. java的引用变量与堆对象
  • 引用变量与对象的创建过程(该部分为参考其他资料感觉讲的比较透彻)
        代码实例:
public class BookDemo {public static void main(String[] args) { //声明引用book //第5行 Book book; //创建对象 //第6行 book = new Book(); //第7行 book.name="计算机编程"; //第8行 System.out.println(book.name);//输出结果是计算表编程 //第9行 book = new Book(); //第10行 book.name="Think in java"; //第11行 System.out.println(book.name);//输出Think in java}}class Book{ String name; String auther;    double Price;}

计算机执行 Jav程序时会在内存中开辟一块栈内存(stack空间。其实在程序运行期间JV迓开辟了一堆内存heap空间。

栈内存空间的存储特点是后进先出,堆内存空间的存储特点和栈不同,类似于一盘散沙,随处可以堆放

上述程序执行过程的内存状态图如下所示:
第5行Book book;
第6行 bool=new Book();//创建对象

编程好习惯:

    个 class(类)写在一个.jav文件,尽量不要把多个类写到一个.jav文件中

 //第9行
 book = new Book();//创建对象

    注:

  •  此时堆内存中有两个对象,引用变量 book 指向新创建的对象
  • 原来引用的对象等垃圾回收
 //第10行
book.name="Think in java";//赋值
从上述解析过程可以看出

Jav的内存管理与分配

ü      是一块 Jav使用内存区域,使用的方式:LIFO(后来者居上)

ü      也是一块 Jav使用内存区域,使用方式:随机分配

局部变量与堆对象空间分配

ü      Jav局部变和方法参在栈中分配小是按照变量的类型分配

ü      对象在堆中分配,按照中声明属性(实例变量)分配空间

变量类型与分配

ü   变量分为基本类引用类型

ü      基本类型变量的空间大小:就是基本类型的空间大小,值是基本类型的值

ü      引用变量的值是个对象的地址值,引用变量通过地址引用了一个对象

ü      引用类型变的占用空间大小和值管理透明(不可看)”由 Jav系统管理:变量占用空

间以及值的管理,都是透明的

5. Java中的构造器

构造方法(构造)要点:

ü      Jav构造器(构造方法)声明在类内部。

ü      方法名与类名一致的方法叫构造方法

ü      构造方声明返回值类型。

ü      构造方法可以包含参数,参数一般是创建对象实例必须依赖的条件(前提条件)。

举例:带参数的构造方法(构造器)
public class Person{ String name; String sex; //构造器 public Person(String name,String sex){  this.name = name;  this.sex = sex; }}
对象实例化的过程

new 运算:创建对象实例(共 步)

第     根据类的属性在堆中分配对象空间,并且自动初始化实例变量

public class CreateDemo {public static void main(String[] args) { Person p = new Person("luqh","女"); System.out.println(p.name+" "+p.sex);}}
new关键字:

第     根据参数类型调用构造器

public class Person{ String name; String sex; //构造器 public Person(String name,String sex){  this.name = name;  this.sex = sex; }}


 public Person(String name,String sex){  this.name = name;  this.sex = sex;

第     ne运算迒回对象的引用地址

public class CreateDemo {public static void main(String[] args) { Person p = new Person("luqh","女"); System.out.println(p.name+" "+p.sex);}}

注意:
this是局部变量,构造方法调用结束好走和参数一样消失。
6.this关键字

thi是对当前对象的引用,是运行期间当前对象本身。

ü      可以使用 thi明确的访问当前对象的属性戒者方法,类似于""

ü      this() 可调用本类的其他构造可以使用构造器的重用简化代码的实现。

ü      this() 必须写在构造器的第一行!因为在构造器之前是没有对象的。

例子:this调用本例构造器

Person(String name)构造哦方法中调用了Person(String name,String sex)构造方法

class Person{ String name; String sex; public Person(String name){  this(name,name); } //构造器 public Person(String name,String sex){  this.name = name;  this.sex = sex; }}
7.构造方法重载
  ü 构造方法只能重载,因为它必须是public,没有返回值,构造参数可以不同。

0 0
原创粉丝点击