黑马程序员-JAVA对象封装构造
2013-10-06 19:56
176 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
![](http://img.blog.csdn.net/20131006190630484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh6aGwyOTI5MDAyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
b,面向过程强调的是功能行为
c,面向对象将功能封装进对象,强调具备了功能的对象,面向对象是基于面向过程的
2,面向对象将以前的过程中的执行者,变成指挥者
3,面向对象这种思想是符合人们思考习惯的一种思想
在以后的开发中,其实就是找对象使用,没有对象就创建一个对象,找对象,建立对象使用对象,维护对象的关系
属性:对用类中的成员变量.行为:对应类中的事物行为
类与对象可以理解为类就是图纸,而对象就是根据图纸构造的事物
局部变量只定义在局部范围内,如定义在方法中,参数上,语句中。
局部变量变量作用于函数中,或者语句中。作用范围结束,变量空间会自动释放。没有默认初始化值。
局部变量:存在栈内存中。随着所属区域的运行而存在,结束而释放。
类就是:对现实生活中事物的描述。
对象:就是这类事物,实实在在存在个体。
![](http://img.blog.csdn.net/20131006193402281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh6aGwyOTI5MDAyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20131006194143281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh6aGwyOTI5MDAyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
优点:便于使用,提高复用性,安全
私有的成员:其他类不能直接创建对象访问,所以只有通过本类对外提供具体的访问方式来完成对私有的访问,可以通过对外提供函数的形式对其进行访问
特点:该函数的名称和所在类的名称相同,不需要定义返回值类型,该函数没有具体的返回值。不可以写return语句
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。为了方便该类创建对象,完成初始化。当在类中自定义了构造函数后,默认的构造函数就没有了。一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分。所以,一个类中如果出现多个构造函数。它们的存在是以重载体现的。
记住:所有对象创建时,都需要初始化才可以使用。对象一建立就会调用与之对应的构造函数
构造函数与一般函数的区别:
构造函数是在对象创建时就被调用。用于给对象初始化。而且初始化动作只执行一次。
而一般方法是对象创建后,需要调用才执行,给对象添加对象具备的功能。可以被该对象调用多次。
构造代码块和构造函数有什么区别?
构造代码块:是给所有的对象进行统一初始化,
构造函数:是给与之对应的对象进行初始化。它具有针对性。
创建对象时内存中都做了什么?
1:先将硬盘上指定位置的Person.class文件加载进内存。
2:执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。
3:在堆内存中开辟一个实体空间,分配了一个内存首地址值。new
4:在该实体空间中进行属性的空间分配,并进行了默认初始化。
5:对空间中的属性进行显示初始化。
6:进行实体的构造代码块初始化。
7:调用该实体对应的构造函数,进行构造函数初始化。()
8:将首地址赋值给p,p变量就引用了该实体。(指向了该对象)
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
面向对象
定义
以前学过C语言,现在学习JAVA语言,它俩是不同的语言,C语言是面向过程的,而JAVA是面想对象的语言,在JAVA中任何程序都是通过对象实现的,程序里将功能封装成对象,让对象调用这些功能,这种思想将数据作为第一位,而方法作为其次。如何理解面向对象
a,面向对象是相对面向过程而言,面向对象和面向过程都是一种思想b,面向过程强调的是功能行为
c,面向对象将功能封装进对象,强调具备了功能的对象,面向对象是基于面向过程的
面向对象特点:
1,将复杂事情简单化2,面向对象将以前的过程中的执行者,变成指挥者
3,面向对象这种思想是符合人们思考习惯的一种思想
在以后的开发中,其实就是找对象使用,没有对象就创建一个对象,找对象,建立对象使用对象,维护对象的关系
面向对象的三大特征:
封装,继承,多态类与对象
类的定义,生活中描述事物无非就是描述事物属性和行为属性:对用类中的成员变量.行为:对应类中的事物行为
类与对象可以理解为类就是图纸,而对象就是根据图纸构造的事物
成员变量和局部变量的区别
定义的位置:
成员变量直接定义在类中,在整个类中都可以被访问。局部变量只定义在局部范围内,如定义在方法中,参数上,语句中。
作用范围:
成员变量作用于整个类中。有默认初始化值。局部变量变量作用于函数中,或者语句中。作用范围结束,变量空间会自动释放。没有默认初始化值。
在内存中的位置:
成员变量:在堆内存中,随着对象的产生而存在,消失而消失。存在于对象所在的堆内存中。因为对象的存在,才在内存中存在。局部变量:存在栈内存中。随着所属区域的运行而存在,结束而释放。
类就是:对现实生活中事物的描述。
对象:就是这类事物,实实在在存在个体。
class Car //对Car这类事物进行描述 { //描述颜色 String color = "红色"; //描述轮胎数 int num = 4; //运行行为。 void run() { System.out.println(color+".."+num); } } class CarDemo { public static void main(String[] args) { //生产汽车。在java中通过new操作符来完成。 //其实就是在堆内存产生一个实体。 Car c = new Car();//建立对象 //c就是一个类类型变量。记住:类类型变量指向对象。 //需求:将已有车的颜色改成蓝色。指挥该对象做使用。在java指挥方式是:对象.对象成员 c.color = "blue";//对对象的属性进行修改 c.run();//使用对象的功能 Car c1 = new Car(); c1.run();//red 4; // Car c = new Car(); // c.num = 5; /* new Car().num = 5; new Car().color = "blue"; new Car().run(); Car c = new Car(); c.run(); c.num = 4; new Car().run(); */ Car q = new Car(); show(q); //show(new Car()); } //需求:汽车修配厂。对汽车进行改装,将来的车够改成黑车,三个轮胎。 public static void show(Car c) { c.num = 3; c.color = "black"; c.run(); } }
类的封装
封装是之通过隐藏对象的属性和实现细节,仅对外提供公共访问方式优点:便于使用,提高复用性,安全
private(私有)关键字
用于修饰类中的成员(成员变量和成员方法),只在本类中有效私有的成员:其他类不能直接创建对象访问,所以只有通过本类对外提供具体的访问方式来完成对私有的访问,可以通过对外提供函数的形式对其进行访问
class Person { private int age; // 将age私有化以后,类以外即使建立了对象也不能直接访问。 但是人应该有年龄,就需要在Person类中提供对应访问age的方式。 public void setAge(int a) { //之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句。 对访问的数据进行操作。提高代码健壮性。 if(a>0 && a<130) { age = a; speak(); } else System.out.println("feifa age"); } public int getAge() { return age; } private void speak() { System.out.println("age="+age); } } class PersonDemo { public static void main(String[] args) { Person p = new Person(); //p.age = -20; p.setAge(-40); p.speak(); } }
构造函数
构造函数是用于对象进行初始化的特点:该函数的名称和所在类的名称相同,不需要定义返回值类型,该函数没有具体的返回值。不可以写return语句
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。为了方便该类创建对象,完成初始化。当在类中自定义了构造函数后,默认的构造函数就没有了。一个类中,可以有多个构造函数,因为它们的函数名称都相同,所以只能通过参数列表来区分。所以,一个类中如果出现多个构造函数。它们的存在是以重载体现的。
记住:所有对象创建时,都需要初始化才可以使用。对象一建立就会调用与之对应的构造函数
构造函数与一般函数的区别:
构造函数是在对象创建时就被调用。用于给对象初始化。而且初始化动作只执行一次。
而一般方法是对象创建后,需要调用才执行,给对象添加对象具备的功能。可以被该对象调用多次。
构造代码块和构造函数有什么区别?
构造代码块:是给所有的对象进行统一初始化,
构造函数:是给与之对应的对象进行初始化。它具有针对性。
class Person { private String name; private int age; { cry();//让所有的对象都具备哭的功能 } Person() { System.out.println("A: name="+name+",,age="+age); } Person(String n)//构造函数的重载 { name = n; System.out.println("B: name="+name+",,age="+age); cry(); } public void setName(String n) { name = n; } public String getName() { return name; } Person(String n,int a) { name = n; age = a; System.out.println("C: name="+name+",,age="+age); //cry(); } public void cry() { System.out.println("cry......"); } } class PersonDemo2 { public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person("lisi"); System.out.println(p2.getName()); } }
创建对象时内存中都做了什么?
1:先将硬盘上指定位置的Person.class文件加载进内存。
2:执行main方法时,在栈内存中开辟了main方法的空间(压栈-进栈),然后在main方法的栈区分配了一个变量p。
3:在堆内存中开辟一个实体空间,分配了一个内存首地址值。new
4:在该实体空间中进行属性的空间分配,并进行了默认初始化。
5:对空间中的属性进行显示初始化。
6:进行实体的构造代码块初始化。
7:调用该实体对应的构造函数,进行构造函数初始化。()
8:将首地址赋值给p,p变量就引用了该实体。(指向了该对象)
----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员——Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- 黑马程序员——java第五天:面向对象(类、对象、变量、封装、构造、this)
- 黑马程序员—Java面向对象(类和对象、封装、构造方法、this关键字、static关键字)
- 黑马程序员 JAVA初级-面向对象 匿名对象、封装、构造函数、构造代码块、this
- 黑马程序员_Java基础_面向对象(概述、类与对象关系、成员变量、封装private、构造函数和构造代码块、this关键字)
- 黑马程序员:Java之介绍对象、封装、构造函数、构造代码块及this关键字
- 黑马程序员-----java面向对象之封装、构造函数、this关键字、static静态总结*
- 黑马程序员——学习日记7 java面向对象之封装
- 黑马程序员-Java的面向对象(对象、类和封装)
- JAVA面向对象知识点总结(2)—封装、构造函数、构造代码块、this关键字
- 黑马程序员_Java面向对象1_封装
- 黑马程序员——Java 面型对象_封装
- 黑马程序员_Java面向对象之封装、继承和多态学习笔记
- Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?
- 黑马程序员-------- java面向对象 封装、构造函数、this static关键字、单例设计
- 黑马程序员 05 Java基础教学 - 05 - 面向对象(1) 之 类、对象、封装
- 黑马程序员_五 【初识面向对象】【类、构造方法、对象】【封装、继承、多态】【this、super】
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
- java基础七(成员变量 局部变量 匿名对象 封装 设计原则 private this 构造方法 static)
- java中类,对象,构造方法,封装的概念及描述