黑马程序员_面向对象Part1
来源:互联网 发布:ps淘宝美工修图视频 编辑:程序博客网 时间:2024/05/29 16:55
------- android培训、java培训、期待与您交流! ----------
面向对象概述:
面向对象是相对面向过程而言。
面向对象和面向过程都是一种思想。
面向过程强调的是功能行为。
面向对象将功能封装进对象,强调具备了功能的对象。
面向对象是基于面向过程的。
三个特征:封装,继承,多态。
成员变量和局部变量:
作用范围:
成员变量作用于整个类中。
局部变量变量作用于函数中,或者语句中。
在内存中的位置:
成员变量:在堆内存中,因为对象的存在,才在内存中存在。
局部变量:存在栈内存中。
成员变量有初始化值,而局部变量没有。
匿名对象使用方式一:
当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。
如果对一个对象进行多个成员调用,必须给这个对象起个名字。
匿名对象使用方式二:
可以将匿名对象作为实际参数进行传递。
封装:
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
封装的好处:
1、将变化隔离。
2、便于使用。
3、提高重用性。
4、提高安全性。
构造函数:
特点:
1.函数名与类名相同。
2.不用定义返回值类型。
3.不可以写return语句。
作用:给对象进行初始化。
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
当在类中自定义了构造函数后,默认的构造函数就没有了。
构造函数是在对象一建立就运行。给对象初始化。而一般方法是对象调用才执行,给是对象添加对象
具备的功能。一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。
构造代码块:
作用:
1、给对象进行初始化。
2、对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:
1、构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
2、构造代码快中定义的是不同对象共性的初始化内容。
Person() { System.out.println("A: name="+name+",,age="+age); } Person(String n) { name = n; System.out.println("B: name="+name+",,age="+age); }
this关键字:
this代表其所在函数所属对象的引用。换言之,this代本类对象的引用。
this的应用:
当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。但凡本类功能内部
使用了本类对象,都用this表示。
构造函数之间互相调用:
Person() { //this("hah"); System.out.println("person run"); } Person(String name) { this();//不能写为Person();这样是错误的! this.name =name; }
Static关键字:
static特点:
1、随着类的加载而加载。也就说:静态会随着类的消失而消失。说明它的生命周期最长。
2、优先于的对象存在明确一点:静态是先存在。对象是后存在的。
3、被所有对象所共享
4、可以直接被类名所调用。
静态代码块:
格式:
static
{
静态代码块中的执行语句。
}
特点:随着类的加载而执行,只执行一次,并优先于主函数。
用于给类进行初始化的。
class StaticCode { int num = 9; StaticCode() { System.out.println("b");//无参构造函数 } static { System.out.println("a");//静态代码块 } { System.out.println("c"+this.num);//构造代码块 } StaticCode(int x)//有参构造函数 { System.out.println("d"); } public static void show() { System.out.println("show run"); } }
对象的初始化:
class Person{ //Person类的属性,及其初始化的值 private Person(){} private String name = "hah"; private int age; private static String country = "cn"; Person(String name,int age){//构造函数 this.name = name; this.age = age; } { System.out.println(name+".."+age);//构造代码块 } public void setName(String name){ this.name = name; } }
创建该对象 Person p = new Person("zhangsan",20);
创建对象执行过程:
1,因为new用到了Person.class.所以会先找到Person.class文件并加载到内存中。
2,执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3,在堆内存中开辟空间,分配内存地址。
4,在堆内存中建立对象的特有属性。并进行默认初始化。
5,对属性进行显示初始化。
6,对对象进行构造代码块初始化。
7,对对象进行对应的构造函数初始化。
8,将内存地址付给栈内存中的p变量。
主函数:
主函数是一个特殊的函数。作为程序的入口,可以被jvm调用。
public:代表着该函数访问权限是最大的。
static:代表主函数随着类的加载就已经存在了。
void:主函数没有具体的返回值。
main:不是关键字,但是是一个特殊的单词,可以被jvm识别。
(String[] arr):函数的参数,参数类型是一个数组,该数组中的元素是字符串。字符串类型的数组。
------- android培训、java培训、期待与您交流! ----------
- 黑马程序员_面向对象Part1
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- 黑马程序员_面向对象
- VMware: Recover vCenter Single Sign On (SSO) master password
- WP开发:页面跳转动画
- 分享Win7 将svn加入系统服务并成功启动的方法
- IM fron Command Line
- OpenVZ 简单应用
- 黑马程序员_面向对象Part1
- C语言中的时间和程序暂停
- Codeforces Round #253 (Div. 1)-A,B
- ASWing 学习(1)
- POJ3067 Japan
- JD 1385:重建二叉树
- HDU 3912 Turn Right
- js页面跳转
- LS2533A Linkas