1.1类
1.1.1 类的概念
l 类(class)和对象(object)是面向对象的核心概念。
- 类是对一类事物描述,是抽象的、概念上的定义;对现实世界中具有共性的事物进行抽象就形成了类;类是一种引用类型;类在现实世界中是不存在的,是人们大脑抽象出来的一个概念。
- 对象是实际存在的该类事物的每个个体,因而也称实例(instance)。
- “万事万物皆对象”
1.1.2 类及类的成员
现实世界万事万物是由分子、原子构成的。同理,Java代码世界是由诸多个不同功能的类构成的。现实世界中的分子、原子又是由什么构成的呢?原子核、电子!那么,Java中用类class来描述事物也是如此,类的成员有:属性(Field)、方法(Method)、构造器、代码块以及内部类。
class Person{ //属性或成员变量 String name; boolean isMarried; //构造器 public Person(){} public Person(String n,boolean im){ name = n;isMarried = im; } //方法或函数 public void walk(){ System.out.println("人走路..."); } public String display(){ return "名字是:" + name + ",Married:" + isMarried; } //代码块 { name = "HanMeiMei"; age = 17; isMarried = false; } //内部类 class pet{ String name; float weight; } } |
1.1.3 类的定义
类型修饰符 class 类名 extends 父对象名称 implements 接口名称{ 属性声明; 方法声明; } |
说明:修饰符public:类可以被任意访问。类的正文要用{ }括起来
public class Person{ private int age ; //声明私有变量 age public void showAge(int i) { //声明方法showAge( ) age = i; } } |
【创建Java自定义类的步骤】
①定义类(考虑修饰符、类名)
②编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
③编写类的方法(考虑修饰符、返回值类型、方法名、形参等)
1.1.4 类的成员之一:属性
语法格式:
修饰符 类型 属性名 = 初值 ; |
说明: 修饰符private: 该属性只能由该类的方法访问。修饰符public: 该属性可以被该类以外的方法访问。类型:任何基本类型,如int、boolean或任何类。
public class Person{ private int age; //声明private变量 age public String name = “Lila”; //声明public变量 name } |
成员变量(属性)和局部变量的区别:
l 成员变量:在方法体外,类体内声明的变量
- 成员变量定义在类中,在整个类中都可以被访问。
- 成员变量分为类成员变量(以static修饰)和实例成员变量(不以static修饰),实例变量存在于对象所在的堆内存中。
- 成员变量有默认初始化值,为该类型的默认值。
- 成员变量的权限修饰符可以根据需要,选择任意一个
l 局部变量:在方法体内部声明的变量
- 局部变量只定义在局部范围内,如:形参(方法签名中定义的变量)、方法内、代码块内等。
- 局部变量存在于栈内存中。
- 作用的范围结束,变量空间会自动释放。
- 局部变量没有默认初始化值,每次必须显式初始化(形参不用)。
- 局部变量声明时不指定权限修饰符
1.1.5 类的成员之二:方法
语法格式:
修饰符 返回值类型 方法名 (参数列表) { 方法体语句; } |
说明:修饰符:public, private等。返回值类型:return语句传递返回值。没有返回值:void。
public class Person{ private int age; public int getAge() { return age; } //声明方法getAge public void setAge(int i) { //声明方法setAge age = i; //将参数i的值赋给类的成员变量age } } |
1.1.6 类的成员之三:构造方法(构造器、构造函数,Constructor)
构造方法主要用来创建类的实例化对象,可以完成创建实例化对象的初始化工作。
语法:
[修饰符列表] 构造方法名(形式参数列表){ 方法体; } |
说明:构造方法的方法名必须和类名一致;构造方法修饰符列表:public、proteced、private
构造方法的作用:
①创建对象
②给创建的对象的属性(成员变量)赋值,即初始化成员变量。
构造方法应该如何调用?
new 构造方法名(实参); //在堆中开辟空间存储对象 |
注意:
①如果一个类没有提供任何构造方法,系统默认提供无参数构造方法。如果一个类已经手动的提供了构造方法,那么系统不会再提供任何构造方法。
②成员变量到底什么时候赋值:只有在调用构造方法的时候,才会给成员变量赋值。
③类的多个构造器之间构成重载
④类对象的属性赋值的先后顺序:属性的默认初始化>属性的显式初始化>通过构造器给属性初始化>通过"对象.方法"的方式给属性赋值
【eclipse操作】
快速生成构造器:菜单栏Source à Generate Constrctor using Fields…
快速生成get,set方法:菜单栏Source à Generate Getters and Setters…
1.1.7 类的访问机制
在一个类中,类中的方法可以直接访问类中的成员变量(例外:static方法访问非static,编译不通过)。在不同类中,先创建要访问类的对象,再用对象访问类中定义的成员。
1.1.8 类的内存
Animal a3=a1;a3.name=“维尼熊”; //此时若将a3的属性改变,那a1的属性也被改变了
//a3不意味着相较于a1重新创建的一个对象,而是a1与a3共用一个对象实体