7.构造函数和方法 |
您所在的位置:网站首页 › 构造函数的八种方法 › 7.构造函数和方法 |
构造函数和方法
一、构造函数
(为什么要用) a)简化对象的创建对象的过程 b)代码重用,为对象的属性赋值,当然还可定一些代码逻缉 a)构造函数名和类名完全一致 b)没有返回类型 三、构造函数语法 public class Teacher { //默认构造函数 public Teacher(){ } //以下两个版本是不同的构造函数 public Teacher(String pName, int pAge){ name = pName; age = pAge; } public Teacher(int pAge, String pName){ name = pName; age = pAge; //根据需要这里还可以写上其它处理逻辑的代码 } }注意:一个类可以有多个版本的构造函数(即构造函数重载),各版本的构造函数要么参数的个数或参数的类型不一样,参数顺序不一样也可以。 四、默认构造函数的使用如果定义类时,你定义了带参数的构造函数,那么此时默认构造函将变成不可用,如果你的确需要使用默认构造函数,那么你必须把默认构造函数明确的写出来。 public class Teacher { //这样Teacher类的默认构造函数不可用了,如要用默认构造函数就要明确写出 public Teacher(String pName, int pAge){ name = pName; age = pAge; } } 五、创建对象时内存中的分配情况创建对象时内存中的分配情况:使用new关键字调用构造函数。 public static void main(String[] args) { Dog dog = new Dog(); //默认构造函数 Person p1 = new Person(dog); } JVM的内存区分为:栈(地址,局部变量),堆,代码段,数据段。
语法: [访问修饰符] 返回类型/void 方法名( [参数列表] ){ //方法主体 } 访问修饰符有4个:public, private, protected, default(不写出来) void a(){ } String a(){ } 这两个方法是相同的,语法错误! 二、方法调用 语法:变量.方法(); 或 变量.方法(参数列表) Person person = new Person(); person.speak(); person.eat(“肉”); 注意:在一个方法内也可以调用另一个方法。 三、构造函数和方法参数的两种参数传递方式a)按值传递:所有的8种基本数据类型即值类型(包括它们对应的包装类)都是按值传递方式也就是说传递的是变量值的副本,String也是按值传递。 int --> Integer类, float --> Float类, boolean --> Boolean类 b)按引用传递:所有引用类型(除String)都是按引用传递参数的即传递的是对象地址。
•变量按static分类: .静态变量(也叫类变量):变量值被该类的所有对象共享。 .非静态变量(也叫实例变量):其值只属于单个对象,独立。 •方法的分类有两种: .静态方法(也叫类方法):此种方法被该类的所有对象共享。 .非静态方法(也叫实例方法):此种方法对该类的所有对象都是独立的。 要理解static的作用,首先对内存区域有所了解: 内存里分四个区域: a)code segment 代码段(存放代码,如静态方法) b)data segment 数据段(存放静态变量、常量) c)Stack 栈(存放局部变量,对象地址) d)Heap 堆(存放new出来的对象或者数组) 六、静态变量(类变量)类变量就是该类的所有对象共享的变量,任何一个该类的实例去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。类变量值的变化对该类所有对象来说都是知道的。在类方法(静态方法)中不能使用this关键字。 a)语法: static 数据类型 变量名 [=初值]; b)静态变量示例:参看chapter07/variables/StaticDemo.java c)静态方法(类方法)示例:参看chapter07/ variables /StaticMethodDemo.java d)静态初始化块: 参看chapter07/ variables /StaticCodeBlockDemo.java static{ …… } e)初始化代码块: { …… } 七、静态方法(类方法)a)语法: 访问修饰符 static 数据返回类型 方法名([参数列表]){ …… } 如:public static void main(String[] args){ } 调用:类名.类方法名([参数列表]); b)静态方法共享,但每个方法内部的局部变量是私有的,每调用一次方法,会在栈中分配局部变量,方法退出时释放所有局部变量空间。 c)示例:类名.静态方法( [参数列表] ); 注意:不要乱用静态方法 八、静态与非静态成员的访 问总结a)静态的东东总是通过类名直接访问,无须通过对象来调用。当然通过对象访问静态成员也是可以的但从不推荐这样用。 b)非静态成员的东东总是和对象相关联,也就是说非静态成员总通过对象来访问。 c)静态成员不可以访问非静态成员,反之Ok。 九、什么是JavaBean什么是JavaBean?其实就是一个通用的类,JavaBean也叫POJO(Plain Old Java Object)类,它有以下特点: a)属性一般私有,使用private关键字声明。 b)为属性提供public 的getter 取值器和setter设值器方法,如:getName(), setName(String name)。 c)必须有一个public的默认构造函数。 为什么要用JavaBean: i.使对象的信息更好的隐藏起来,不会轻易的被外界破坏,这也是面向对象设计的本质。 ii.利用Java中反射技术可让程序自动化。 十、包的作用包的作用:包其实在window里就是文件夹。 a)防止类命名冲突 b)可以更好的保护类中的数据 c)更加的模块化 d)在实际开发当中应根据类的职责将类放入到不同的包中 e)包的命名规则: i.包的命名遵守互联网域名的反向命名法: news.sina.com, game.sina.com ii.企业性质(com,edu,org,net).公司名.项目名.模块名[.子模块].类名 iii.包名由全小写字母组成,不能以圆点开头或结尾 /* com.sina.news.*负责新闻处理的类com.sina.game.*负责游戏处理的类[com | org | net | edu] .公司名.项目名.模块名.类(子包)。如:com.lanqiao.olts.Xxx.Examination.java完整的类名(包+类名)、全限定类名com.lanqiao.ibook.entity.Order, Customercom.lanqiao.ibook.dao.OrderDao, CustomerDao(负责访问数据库) */ package com.lanqiao.olts; //必须在import语句之前 import ……; public class Xxx{} 使用命令编译包中的类: 1.先去到包的顶级目录 2.编译:javac 包名1/包名2……/类名.java 3.运行:java包名1/包名2……/类名 十一、类的改进访问修饰符可以用在:类定义,构造函数定义、属性、方法定义。 1)private: 私有访问修饰符的成员只能本类可以访问,其它类无法使用private修饰的成员。 2)public: 公有访问修饰符,任何包中的类都可以访问。 3)默认访问修饰符:就是没有修饰符,同一个包中的类都可以访问。 4)protected: 受保护的,就是提供给在不同包中子类使用的,也叫做子类访问级别。等到讲继承的时候再说。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |