一、类的简介
类是Java语言中最重要的“数据类型”,类声明的变量被称为对象,即类是用来创建对象的模板。
class 类名 {
类体的内容
}
class 是关键字,用来定义类。
“class People” 为类声明。 注意:1、首字母大写 2、写名知意
类是一种用于创建具体实例(对象)的数据类型。
类的目的:
抽取出一类事物共有的属性和行为,并用一定的语法格式来描述所抽象出的属性和行为。
抽象的关键是抓住事物的两个方面:属性和行为。
类体:1、变量的声明:用来存储属性的值(体现对象的属性)。 数据
2、方法定义:方法可以对类中声明的变量进行操作,即给出算法(体现对象所具有的行为)。
在方法体重声明的变量和方法的参数被称作局部变量。
方法中的局部变量的名字如果和成员变量名字相同,那么方法就隐藏了成员变量。
成员变量有默认值,而局部变量没有。
二、构造方法与对象的创建
类是面向对象语言中最重要的一种数据类型,可以用类来声明变量。
类声明对象后,还必须创建对象,即为声明的对象分配所拥有的变量(确定对象所具有的属性),也就是给出这个类的一个实例。
构造方法:
程序用类创建对象时需要使用类的构造方法。类中的构造方法必须与所在类的名字完全相同,且没有返回值类型。
类构造方法可以有多个,但参数不能相同(参数个数或同一位置的参数类型不同)
对象在未分配内存时初始值为null。
使用对象:抽象的目的是产生类,而类的目的是创建具有属性和行为的对象。
对象 . 变量 (体现对象的属性)
对象 . 方法 (体现对象的行为)
对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量。
三、类与程序的基本结构
Java应用程序有一个主类,即含有 main 方法的类,Java应用程序从主类开始执行。
编写具有一定功能的可复用代码是软件设计中非常重要的工作。
尽管Java源文件中可以有多个类,但仍然提倡一个Java源文件只编写一个类。
编程境界:1、可重用性 2、可扩展性 3、可维护性
名词(对象) 动词(方法)参数传值:
参数属于局部变量,当对象调用方法时,参数才被分配内存空间。
方法中参数变量的值是调用者制定的值的拷贝。
对于基本数据类型的参数,向该参数传递的值不可以高于该参数的级别。
传参,传的是值,方法调用是值传递。
引用类型占两个内存,基础类型只占一个。
对象为参数时,传递引用地址。
同一类的每个对象共享该类方法。
方法执行完,方法内为局部变量分配的内存自动消失。
没有任何引用的对象,会被垃圾收集收回。
引用: 一小块内存指向大块内存对象的组合:
一个成员变量可以是Java允许的任何数据类型。
通过组合对象来复用方法的特点:1、当前对象只能委托所包含的对象调用其方法;2、当前对象随时可以更换所包含的对象,即对象与所包含的对象属于弱耦合关系。
四、实例成员与类成员
成员变量可以为实例变量和类变量。在声明成员变量时,用关键字static修饰的称做类变量否则称做实例变量。
实例变量和类变量的区别:1、不同对象的实例变量互不相同;2、所有对象共享类变量;3、通过类名直接访问类变量。
类变量是和该类创建的所有对象相关联的变量,改变其中一个对象的这个类变量,就同时改变了其他对象的这个类变量。
实例变量仅仅是和相应对象关联的对象。
类中的方法分为实例方法和类方法,加static关键字修饰的是类方法。
实例方法和类方法的区别:
1、对象调用实例方法2、类名调用类方法3、设计类方法的原则
如果一个方法不需要操作类中的任何实例变量,就可以满足程序的需要,就可以将这样的方法设计一个static方法。方法重载:
Java中存在两种多态,重载(Overload)和重写(Override),重写是与集成有关的多态。一个类可以有多个方法具有相同的名字,但这些方法的参数必粗不同。(参数个数不同,或参数列表中对应的某个参数类型不同)this关键字:
this是Java的一个关键字,表示某个对象。
this不可以出现在static方法中。
this关键字出现在类的构造方法中时,代表使用该否早方法所创建的对象。
this . 成员变量
实例方法中,this代表正在调用该方法的当前对象。
注意:Java语言不允许用户使用java作为包名的第一部分
例子:import 包名 . * ;import 包名 . 类名 ;
五、访问权限
访问限制符有private,protected和public,都是Java关键字。
用private修饰的成员变量和方法称为私有变量和私有方法。
用public修饰的成员变量和方法被称为共有方法和共有变量。
不用private,public,protected修饰符修饰的成员变量称为友好方法和友好变量。
如果源文件使用import语句引入另外一个包中的类,并用该类创建一个对象,那么该类的这个对象就不能访问自己的友好变量和友好方法。
用protected修饰的成员变量和方法被称为受保护的方法。
任何一个和Tom类在同一包中的类也可以通过Tom类的类名访问Tom类的protected类变量和protected类方法。
注意:1、不能用protected和private修饰类。2、访问权限由高到低:public protected 友好型 private
如果一个类中的某个成员是私有类变量(静态成员变量),那么在另外一个类中,也不能通过类名调用这个私有类方法。
当另一个类中用类Tom创建一个对象后,如果这个类与类Tom同在一个包中,那么对象能访问自己的protected变量和protected方法。
任何一个与Tom在同一包中的类也可以通过Tom类的类名访问Tom类的protected类变量和protected类方法。