面向对象思想
面向过程:
强调的是过程,所有的啥事情都需要自己完成
面向对象:
是一种更符合我们思想习惯的思想(懒人思想,我自己不做事情,交给别人去做)
可以将复杂的事情简单化(对于使用者来说变得简单了,但是对象里面还是很复杂)
将我们从执行者变成指挥者,角色发生了转换。
定义:
首先根据客户的需求抽象出业务逻辑对象,然后对需求进行合理的分层,构建对应的独立的业务模块,之后进行设计业务逻辑,利用封装集成多台抽象的思想,实现实际业务需求,最后通过整合各个模块,达到高内聚,低耦合的效果从而满足客户的需求。
啥是类?
类定义了一种抽象数据类型
不但定义了抽象数据类型的组成(成员变量),同时还定义了可以对该类型实施的操作(方法)
定义类的成员变量
类的定义包括 成员变量 的定义和 方法 的定义,其中成员变量用于描述该类型对象共同的数据结构
成员变量和局部变量
1、定义位置:成员变量定义在类中;局部变量定义在方法中。
2、作用域:成员变量作用在整个类中;局部变量只能作用在定义它的方法中更或者语句中使用。
3、内存中的位置:成员变量存储在堆内存中,并且自动赋予初始值;局部变量它存储在栈内存中,不会自动赋值。
4、生命周期:成员变量在对象创建的时候存储在堆内存中,在对象被回收的时收回来;
局部变量存储在栈中,在方法或语句中执行的时被创建,方法或语句执行完之后被销毁。
Java语言中,类的成员变量的滴定仪可以使用如下语法
class 类名{
成员变量类型 变量名称;
}
class 类名{
修饰词 返回值类型 方法名称(参数列表){
方法体.....
}
}
例:
class student{
String name;
int age;
char gender;
}
成员变量类型
数值类型(byte,short,int,long,float,double) -----0
boolean型 -----false
char型 -----/u0000
引用类型 -----null
类中出了定义成员变量,还可以定义方法,用于描述对象的行为,封装的对象的功能;
方法的重载
方法的签名包含:方法名和参数列表
一个类中,不能有两个方法的签名完全相同,即一个类中不可以有两个方法的方法名和参数列表完全一样
可以一个类的方法的方法名相同而参数列表不同
会出现编译错误!!!
public class cashier {
public boolean pay(double money){...}
public boolean pay(double money){...}
}
正确:(方法重载)
public class cashier{
public boolean pay(double money){...}
public boolean pay(String name){...}
}
方法的重写
重写是指在子类中定义和父类完全相同的方法,在程序运行时候,根据对象的类型不同(而不是引用类型)而调用不同的版本。
***与重载的不同:重载是指一个类中定义多个方法名相同但参数列表不同的方法,在编译时,根据参数个数和类型来决定绑定哪个方法。
构造方法
构造方法是定义在类中的,不同于其他方法,构造方法有如下两点规则
1、构造方法的名称和类名相同
2、构造方法没有返回值,也不能写 void
[访问修饰符] 类名{
//构造方法体
}
用于实现对象成员变量的初始化
this -----用在方法体中,用于只想调用该方法的当前对象
即哪个对象调用方法 this就指哪个对象 在方法中需要通过this关键字指明当前对象
为了方便,在没有歧义的情况面可以省略this
public void drop(){
this.row ++;
}
省略版:
public void drop(){
row ++;
}
继承 -----extends
发现一些类中的属性和方法是相同的,所以把这些相同的属性和方法提取到一个新的类中,然后利用extends关键字让原来的类的新的类产生联系,这种联系称之为继承。
通过extends关键字可以实现类的继承;
子类可以继承父类的成员变量及成员方法,同时也可以定义自己的成员变量和成员方法;
Java语言不支持多重继承,一个类只能继承一个父类,但是一个父类可以由多个子类。
子类可以继承父类的成员变量and成员方法,同事也可以定义自己的成员变量和成员方法
Java不支持度冬虫继承,一个类只能继承一个