A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 北斗123 中级黑马   /  2015-3-8 15:29  /  992 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

帮忙总结一下 构造函数、静态函数、抽象函数、构造代码块的特点和用法?

7 个回复

倒序浏览
// 构造函数:给对象进行初始化,对象一建立就会调用与之对应的构造函数。具有针对性,
// 特点:1:该函数的名称和所在类的名称相同。
                // 2:不需要定义返回值类型。
                  // 3:该函数没有具体的返回值。
// 所有对象创建时,都需要初始化才可以使用。
// 当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数。
// 当在类中自定义了构造函数后,空参数就没有了。
// 一个类中如果出现多个构造函数。它们的存在是以重载体现的。
// 构造函数和一般函数在写法上有不同,在运行上也有不同,
// 一般方法是对象调用才执行,是给对象添加对象具备的功能。
// 一个对象建立,构造函数只执行一次。而一般发放可以被该对象调用多次。
// 什么时候使用构造函数呢?
// 发现具体事物一出现,就具备了一些特征,那就将这些特征定义到构造函数内。

// static静态:是一个修饰符,用于修饰成员(成员变量和成员函数)。
// 特点:1,想要实现对象中的共性数据的共享。可以将这个数据进行静态修饰。
                // 2,被静态修饰的成员,可以直接被类名所调用。也就是说,
                  // 3,静态随着类的加载而加载。而且优先于对象存在。
                        // 4,被所有对象所共享,可以直接被类名所调用。
// 静态方法只能访问静态成员,不可以访问非静态成员。
// 静态方法中不能使用this,super关键字。
// 成员变量和静态变量的区别:
        // 1,成员变量称为实例变量。对内存
        // 2,静态变量称为类变量。方法区
        // 3,成员变量随着对象被回收而消失。
        // 4,静态变量随着类的消失而消失。
        // 5,成员变量只能被对象所调用 。
// 所以,成员变量可以称为对象的特有数据,静态变量称为对象的共享数据。
// 静态有利有弊:
// 利,对象数据单独存储,节省空间。可以直接被类名调用。
// 弊,生命周期过长,访问出现局限性。(静态虽好,只能访问静态。
// 什么时候定义静态变量(类变量)呢?
        // 当对象中出现共享数据时,对象特有数据要定义成非静态存在于堆内存中。
// 什么时候定义静态函数呢?
        // 当功能内部没有访问到对象的特有数据,那么该功能可以定义成静态的。

// 构造代码块:是给所有的对象进行初始化,只要对象一建立。就会调用这个代码块。
// 静态代码块:是给类进行初始化的,静态代码块随着类的加载而执行,只执行一次。
// 执行顺序:静态代码块  主函数  构造代码块  构造函数;
回复 使用道具 举报
静态代码块
格式:
Static
{
        静态代码块执行语句;
}
特点:随着类的加载而加载,只执行一次,用于给类进行初始化。优先于主函数执行
一句person p=new person(“zhangsan,20”);
这句话都做了什么事情?
1.因为new用到了person.class,所以会先找到person.class文件并加载到内存中
2.执行该类中的static代码块,如果有的话,给person.class类进行初始化  static{执行语句;};
3.在堆内存中开辟空间,分配内存地址
4.在堆内存中建立对象的共有属性,并进行默认初始化   static 参数
5.对属性进行显示初始化    参数类型 参数= 参数值
6.对对象进行构造代码块初始化   {执行语句;}
7.对对象进行对应的构造函数初始化 类名(){执行语句;}
8.将内存地址付给栈内存中的P变量
当多个类中出现相同功能,但是功能主体不同时,这是可以进行向上提取,但是提取的只是功能的定义,而不提取功能主体,同时功能的定义前面用abstract修饰,表示抽象方法,同时类也要用abstract修饰,表示抽象类(study()——>功能的定义,{执行语句};——>功能主体    抽象方法表示为  :abstract 返回值类型 函数名());抽象就是看不懂
抽象的特点:
1.        抽象方法一定在抽象类中
2.        抽象方法和抽象类都必须被abstract修饰
3.        抽象类不可以用new创建对象,因为调用抽象方法没有意义
4.        抽象类中的抽象方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用,如果子类值覆盖了部分抽象方法,那么该子类还是一个抽象类
抽象类和一般类没有什么太大不同,该怎么描述还怎么描述,只不过,该事物出现一些看不懂的东西,这些不确定的部分,也是该事物的功能,需要明确出现,但那是无法定义主体。通过抽象方法来表示。抽象类中可以定义抽象方法也可以定义一般方法,抽象类不可以实例化。
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象
回复 使用道具 举报
这么懒 自己花点时间好好总结一下能够让自己对这一部分内容有更深刻的认识,记得会更牢  别人的总结那是别人的思路 别人的理解 只可以借鉴
回复 使用道具 举报
艺多不压身丶 发表于 2015-3-8 15:34
// 构造函数:给对象进行初始化,对象一建立就会调用与之对应的构造函数。具有针对性,
// 特点:1:该函数 ...

我非常用心的看了  非常的全面 谢谢您
回复 使用道具 举报
小小迪 发表于 2015-3-9 08:29
静态代码块
格式:
Static

貌似这是听毕老师课程的笔记吧  
回复 使用道具 举报
wenke 发表于 2015-3-9 09:59
这么懒 自己花点时间好好总结一下能够让自己对这一部分内容有更深刻的认识,记得会更牢  别人的总结那是别 ...

谢谢你的提醒
不过我有总结  这里只为交流 也为我总结的不够全面的补充
回复 使用道具 举报
北斗123 发表于 2015-3-9 19:59
貌似这是听毕老师课程的笔记吧

我看了视频自己敲的好不好,不全一样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马