1. 类
1)是同类型东西的概念,是对现实生活中事物的描述,映射到Java中描述就是class定义的类。
2)其实定义类,就是在描述事物,就是在定义属性(变量)和方法(函数)。
3)类中可以声明:属性,方法,构造器;
属性就是实例变量,用于声明对象的结构的,在创建对象时候分配内存,每个对象有一份!
实例变量(对象属性)在堆中分配,并作用于整个类中,实例变量有默认值,不初始化也能参与运算。
4)类与类之间的关系:
① 关联:一个类作为另一个类的成员变量
public class A {
pulic B b ;
}
class B { }
② 继承:
public class B extends A { }
class A { }
③依赖:个别方法和另一个类相关。
public class A {
public void f(B b) { } //参数里有类B
public B g() { } // 返回值里有B
}
class B { }
为什么要引入类?
先看一个案例:
需求:实现员工信息管理,将员工信息中的下列几项数据(姓名、性别、年龄、薪水), 存储在信息管理系统中进行操作,然后输出这个员工的信息。
案例1:
上述输出的是一个员工信息,要是实际企业应用中,是有很多的,怎么操作,像下面的那样?
案例2:
显然,已经不能满足实际的需求了,所以,有了面向对象程序设计。
类设计步骤:
第一步:分析这些对象的特征,然后进行数据类型的抽象,所谓抽象数据类型可以理解为:将不同类型的数 据的集合组成个整体用来描述一种新的事物。
第二步,根据需求定义类的构造器,构造器是用来给类的属性进行初始化赋值的。
第三步:分析这些对象的行为或者是可以实施的操作等,定义成方法。
这样完成了一个类的设计,再根据设计编写这个类即可。
案例3:Emp实体类
总结:类是用于构建对象的模板,对象通过类实例化产生,一个类可以创建多个对象,每个对象拥有自己的数据(属性)和行为(方法)。
2. 对象
对象是一个客观存在的、唯一的实体,是面向对象编程过程中分析与解决问题的出发点与基础。对象的实质就是内存中的一块存储区域,其数据结构由定义它的类来决定。其本质就是数据。
对象创建的堆栈图
3. 面向对象的核心特征:封装、继承、多态
封装:就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系;
继承:子类继承其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写,继承增加了代码的可重用性;
多态:多个子类中虽然都具有同一个方法,但是这些子类实例化的对象调用这些相同的方法后却可以获得完全不同的结果,多态性增强了软件的灵活性。
4. 构造方法
构造方法也叫构造器。
1)构造器的名称必须与类名同名,包括大小写。
2)构造器没有返回值,但也不能写void,也不能写return。
3)构造器的参数一般和实例变量一致,是初始化对象的前提条件。
4)用new调用!且对象一建立,构造器就运行且仅运行一次。一般方法可被调用多次。
5)类一定有构造器!这是真的,不需要质疑!
6)如果类没有声明(定义)任何的构造器,Java编译器会自动插入默认构造器!
7)默认构造是无参数,方法体是空的构造器,且默认构造器的访问权限随着所属类的访问权限变化而变化。如,若类被public修饰,则默认构造器也带public修饰符。
8)默认构造器是看不到的,一旦自己写上构造器则默认构造器就没有了,自己写的叫自定义构造器,即便自己写的是空参数的构造器,也是自定义构造器,而不是默认构造器。
9)如果类声明了构造器,Java编译器将不再提供默认构造器。若没手动写出无参构造器,但却调用了无参构造器,将会报错!
10)构造器是可以重载的,重载的目的是为了使用方便,重载规则与方法重载规则相同。
11)构造器是不能继承的!虽说是叫构造方法,但实际上它不是常说的一般方法。
5. this关键字
在构造器里面,经常会出现this关键字,代当前对象,即哪个对象调用此构造器,指的就是哪个对象。
this的用法:
1)this.成员变量 ---访问成员变量
2)this() ---调用本类的构造方法(一般是用于构造器中调用另外一个构造器)
案例4: