一、面向对象
- 面向对象的特点主要可以概括为封装性、继承性和多态性。
- 封装性:封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节。
- 继承性:继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。
- 多态性:多态性指的是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其他类继承后,它们可以具有不同的数据类型或表现出不同的行为,这使得同一个属性和方法在不同的类中具有不同的语义。
二、类的定义 - 类是一个模板,它描述一类对象的行为和状态。
- 类是对象的抽象,它用于描述一组对象的共同特征和行为。
- 类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也称之为属性;成员方法用于描述对象的行为,可简称为方法。
- 定义在类中的变量被称为成员变量,定义在方法中的变量被称为局部变量。
class Person {
int age =10; //类中定义的变量称作成员变量
void speak {
int age =60; //方法内部定义的变量称作局部变量
System.out.println(“大家好,我今年”+age+”岁”);
}
}
注:在Person类的speak()方法中有一条打印语句,访问了age,此时访问的age是局部变量age,如果调用speak()方法,输出的值为60;
三、对象的创建与使用
1、 定义类的基本格式:
[修饰符] class 类名
{
//零到多个构造器,零到多个成员变量,零到多个方法,零到多个初始化块
}
//修饰符可以是public 、final 、abstract 或者不写
- 类名:大坨锋命名
2、 构造器定义的格式:
[修饰符] 类名(形参列表)
{ //构造器方法体代码 }
//修饰符可以是 public 、 private 、 protected,也可以不写
- 构造器也叫构造方法或者构造函数
- 名称与类名相同,没有返回值,不能写void。
- 如果类中没有手动添加构造器,编译器会默认再添加一个无参构造器。
- 如果手动添加了构造器,默认的构造器就会消失。
- 构造器可以重载。
3、 成员变量 - 成员变量定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。
- 成员变量可以被类中的方法、构造方法和特定类的语句块访问。
[修饰符] type 成员变量名称 [ = 默认值];
//修饰符 (public protected private)三选一、 static、final
- 成员变量初始化值
4、 方法
[修饰符] 方法的返回值类型 方法名称 (参数类型 参数名1,参数类型 参数名2)
{ //方法体代码 }
//修饰符 (public protected private)三选一、 static、final
- 方法是一段可以重复调用的代码,也称之为函数。
- 修饰符:方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等。
- 返回值类型:用于限定方法的返回值的数据类型。
- 参数类型:用于限定调用方法是传入参数的数据类型。
- 参数名:是一个变量,用于接收调用方法是传入的数据。
- return关键字:用于结束方法以及返回方法指定类型的值。
- 返回值:被return语句返回的值,该值会返回给调用者。
- 参数列表:用于描述方法在被调用时需要接收的参数,方法不需要任何参数时,则参数列表为空即可。
- 方法的返回值必须为方法声明返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法的return语句可以省略。
5、类和对象的关系 - 必须先定义类,才可以创建对象;类不占用内存,单对象占用内存
- 对象必须是具体的、指定的东西,如:电脑本身对象,但我面前的这台电脑是对象。
- 使用new关键字来创建对象
类名 对象名称 = new 类名(); //具体格式
Person p = new Person(); //创建Person类的实例对象代码
- 在创建Person对象后,可以通过对象的引用来访问对象的所有成员
class Exampale01 {
public static void main(String [] grgs){
Person p1 = new Person();//创建第一个Person对象
Person p2 = new Person();//创建第二个Person对象
P1.age = 18; //为age属性赋值
P1.speak(); //调用speak对象的方法
P2.speak();
}
}
结果:大家好,我今年18岁;大家好,我今年0岁;
6、类的设计
- 对象是通过类创建出来的,在程序设计时,最重要的就是类的设计。
- 练习:先设计一个学生类(Student),在这个类中定义两个属性(name、age),其中name属性为String类型,age属性为int类型,分别表示学生的姓名和年龄,定义一个方法introduce()表示学生自我介绍。
public class Student{
String name;//定义一个姓名属性
int age ; //定义一个年龄属性
public void introduce(){
//方法中打印属性name和age的值
System.out.println(“大家好,我叫” + name + “我今年” +age + “岁!”)
}
}
7、类的封装
针对设计的Student类创建的对象,并访问该对象的成员
public class Example{
public stalic void main(String [] args){
Student stu = new Student(); //创建学生对象
stu.age=18; //为对象的age属性赋值
stu.name=”靓靓怡”; //为对象的name属性赋值
stu. Introduce(); //调用对象的方法
}
}
运行结果:大家好,我叫靓靓怡,我今年18岁!
- 所谓类的封装是指定在定义类时,将类中的属性私有化,使用private关键字来修饰。
- 私有属性只能在它所在类中被访问,如果外界需要访问,需要提供public修饰的公有方法,其中包括用于获取属性值的getXxx方法和设置属性值的setXxx方法。