面向对象
1.简介;
面向对象是相对于面向过程而言,面向过程强调功能的行为,而面向对象强调的是将功能封装进对象,强调具备了功能的对象。
2. 面向对象的一些概念:
类、对象、继承、封装、多态等
3. 对象的组成
属性、行为(类也是如此)
4.类是对大量对象共性的抽象、是创建对象的模板。
一、类
1.定义类的语法:
【修饰符】class 类名{
//变量
//方法}
例如:public class name{}
2.定义变量的语法:
【修饰符】数据类型 变量名=变量值
例如:(public) Int a=12;
3.成员变量和局部变量
成员变量:
成员变量定义在类中,在整个类中都可以被访问。
成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
成员变量有默认初始化值。
局部变量:
局部变量只定义在局部范围内,如:函数内,语句内等。
局部变量存在于栈内存中。
作用的范围结束,变量空间会自动释放。
局部变量没有默认初始化值。
4.类的使用
实例化对象 :
类名 类变量名=new 类名(); Student stu=new Student();
获取属性值:
变量类型 变量名= 类变量名.属性名; int stu1=stu.name;
设置属性值:
类变量名.属性名=属性值; stu.name=”李铭”;
调用方法 ;
类变量名.方法名([参数值,参数值,…]); stu.study()
二、方法的重载
1.概念:
在同一个类中,允许有多个同名的函数,只要他们的参数个数和类型不同即可。
2.特点:
与返回值类型无关,只看参数列表。(优点是方便阅读,优化程序设计)
例如:
三、构造器(相当于重载)
1.特点:
函数名和类名相同,不用定义返回值类型,没有具体的返回值类型。
2.作用:
给对象进行初始化
3.语法结构:
【修饰符】方法名和类名相同(【参数类型 参数名,’…………】){ }
注意:构造器没有返回类型,包括关键字void也不能有,任何类都含有构造器。如果没有显式地定义类的构造器,则系统会为该类提供一个默认的构造器。这个默认的构造器不含任何参数。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。
4.构造器的使用:
通过使用new运算符构造对象
语法:
类名 类变量名=new 类名([参数值]);
//使用无参构造器
GouTest g=new GouTest();
//使用有参构造器且第一个参数是字符串 第二个参数是整数int类型
GouTest g=new GouTest(“消除”,20);
四、this关键字
1.特点:
This代本类对象的引用。当在函数内需要调用该函数的对象时候,就用this。
this([参数列表])调用一个类的另外一个构造方法
调用:调用构造方法的类的时候会直接执行里面的方法
**注意:**this(【参数值1,参数值2,………】);必须在第一行。
五、实例成员和类成员
什么是类成员:
使用static修饰的成员方法和成员变量称为类成员
使用static修饰的成员变量叫做类变量
使用static修饰的成员方法叫做类方法
什么是实例成员:
未使用static修饰的成员方法和成员变量称为实例成员
未使用static修饰的成员变量叫做实例变量
未使用static修饰的成员方法叫做实例方法
static关键字:
用于修饰成员(成员变量和成员函数)
被修饰后的成员具备以下特点:
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用
使用注意:
静态方法只能访问静态成员
静态方法中不可以写this,super关键字
主函数是静态的
六、封装
封装的概念:
把客观事物封装成抽象的类,并且类可以把自己的属性和方法只让可信的类或者对象进行操作,对不可信的类或者对象隐藏,这样的过程叫做封装。
封装的分类:
对属性的封装:
将属性设置为private(私有),限制其只能在类的内部使用
对方法的封装:
对于方法的封装,将外部可以访问方法设置为public,将外部不能访问的方法设置为private。