Java面向对象介绍
面向对象(Object Oriented)是一种新兴的程序设计方法,其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。
简单点说面向对象的作用就是为了减少重复代码,思维方式则是先考虑整体再细化局部。
1)对象:系统中用来描述客观事物的一个实体,是构成系统的一个基本单位。具有静态的特征和动态的行为或用途。
比如一个人、一辆车。人类在对事物进行描述的时候大多从两个方面,即从静(特性、特征)和动(用途、行为)来展开。
特征:体重、性别、年龄.....
行为:吃饭、跑步.....
补:对象的生命周期包括三个阶段:生成、使用、消除
2)类:对具体事物的一般特征进行描述,就是具有相同属性和行为的一组对象的集合。
比如每个人是一个对象,但都具有体重、性别等静态特征及吃饭、跑步的动态行为,而把这些相同属性和行为进行组合就形成了类。
根据类创建出的就为对象。相同的类通过不同的实现而得到不同的对象。
类的具体表现或者实例就是对象,而对象的抽象或者总概括就是类。
以上就为类和对象之间的关系。
2:类与对象具体实现
1)类
类包括类声明和类体,具体实现如下:
[类修饰符] class 类名 [extends 父类名称] [implements 接口名称列表]
{
变量定义及初始化;
方法定义及方法体;
}
类修饰符:[public|abstract|final] 缺省方式为frindly
Java类具有private、public、protected这些修饰符,这些修饰符控制着对类和类的成员变量以及成员方法的访问。
private修饰的类、变量或方法则表示只能在当前类中进行使用,子类或者其他包中的类是无法进行访问的。
protected修饰的类,只有本包内的该类的子类或其他类可以访问此类中的成员变量及方法。
public允许类具有完全开放的可见性,所有其他类都可以访问它,省略public,则为default,即只有位于同一个包(本质上就是文件夹)中的类可以访问该类。
abstract指明该类为一个抽象类,说明该类是一个定义不完全的类,需要被继承,才能实例化创建对象。
final:表明该类为最终类,不能被继承。
extends:表示继承,如果没有指定继承关系,则自动从Object类派生该类(一个类只允许继承一个类)。
implements:表示实现接口(可实现多个接口,用逗号分割)。
类语法格式:
public 类名{
..方法体
public 类名(){} //无参构造方法
public 类名(int tag){} //有参构造方法
}
设用方法方式:
1> 直接使用对象调用
类名 lei = new 类名(); lei.方法();
2> 匿名对象调用
new 类名().方法();每次new时会在堆内存生成一个新的匿名对象
1:构造方法
每个类中除定义的方法体外还存在一种特殊类型的方法——构造方法,构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。
注:构造方法没有返回值且方法名与类名一致;如果在类中定义的构造方法都不是无参的构造方法,那么编译器不会为类设置一
个默认的无参构造方法,只有当类中没有明确定义构造方法时,编译器才会自动创建一个不带参数的默认构造方法。一个类中可
以根据实际使用情况创建多个参数不同的构造方法。
2:变量
成员变量:成员变量类型可以为java中合法的数据类型,初始值可有可无,如没有初始值则会有默认值;成员变量可以为私有也
可为公共的。
public class User{//类
private String name; // 成员变量
}
局部变量:成员方法中定义的变量,在方法执行时创建,方法执行结束后被销毁;在使用时必须进行赋值或初始化,否则会编译
错误;在相互不嵌套的作用域中可以同时声明两个名称、类型相同的局部变量,但是在相互嵌套的区域中不可以这样声明,编译
器会报错。(从方法执行到方法执行结束这一有效范围内称为变量的作用域)
public class User{//类
private String name; // 成员变量
public String setName(String uName){ //uName为局部变量
this.name = uName; //将值赋值给类中的成员变量
}
}
在setName方法外访问uName会编译报错,超出了局部变量的作用域
3:函数重载
两个或多个函数在同一个类中,函数名及返回值保持一致,参数列表不同。如无参与有参的构造方法