一、对象
1、面向对象
(1)Java语言是一种面向对象的语言。
(2)面向对象的思想是把问题看成是由若干个对象组成,这些对象之间是独立的,但又可以相互配合、连接和协调,从而共同完成整个程序要实现的任务和功能。
(3)面向对象的三大特征:封装、继承和多态。
2、对象解释
(1)对象是用来描述客观事物的一个实体。
(2)用面向对象方法解决问题时,要对现实世界中的对象进行分析和归纳,找出哪些对象与要解决的问题是相关的。
(3)万事万物皆对象
3、 创建对象
(1)类是一类事物的集合和抽象,代表这类事物公有的属性和行为(方法)。
(2)一个对象成为类的一个实例,是类一次实例化的结果。
(3)类的对象可以调用类中的成员,如属性和方法等。
创建对象的语法格式如下:
类名 对象名 = new 类名();
-->new是关键字
-->左边的类名为对象的数据类型。
-->右边的类名()成为类的构造方法。
//类名 对象名 = new 类名();
School school1 = new School();
4、 使用对象
在Java中,要引用对象的属性和方法,需要使用“.”。
使用对象的语法格式如下:
对象名.属性 [= 属性值]; //引用对象的属性
对象名.方法名(); //引用对象的方法
例子:创建SchoolTest类,使用School类对象方法如下
public class SchoolTest {
public static void main(String[] args) {
//创建School类对象
//类名 对象名 = new 类名();
School school1 = new School();
//给对象的属性赋值 对象名.属性名 = 数据;
school1.schoolName = "魔法学院";
school1.address = "安徽合肥";
school1.year = 100;
school1.phoneNumber = "13822556677";
//对象调用方法 对象名.方法名();
school1.printInfo();
}
}
5、 对象数组
(1)对象数组的数据类型就是具体的类名,对象数组存储的就是这个类的对象,每个数组元素就是一个对象。
(2)根据数组下标找到某个元素时,按照对象的使用方法来使用该元素。
类名[] 数组名 = {对象1,对象2,···,对象n};
面向对象的优点如下:
(1)与人类的思维习惯一致:面向对象的思维方式是从人类考虑问题的角度出发,把人类解决问题的思维过程转变为程序能够理解的过程。面向对象程序设计使用“类”来模拟现实世界中的抽象概念,用“对象”来模拟现实世界中的实体,从而用计算机解决现实问题。
(2)信息隐藏,提高了程序的可维护性和安全性:封装实现了模块化和信息隐藏,即将类的属性和行为封装在类中,这保证了对它们的修改不会影响到其他对象,利于维护。同时,封装使得在对象外部不能随意访问对象的属性和方法,避免了外部错误对它的影响,提高了安全性。
(3)提高了程序的可重用性:一个类可以创建多个对象,体现了重用性。
二、类
1、类解释
(1)类是具有相同属性和方法的一组对象的集合。
(2)类定义了对象将会拥有的特征(属性)和行为(方法)。
(3)类和对象的关系就是抽象和具体的关系。类是多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例。
面向对象设计的过程就是抽象的过程,一般分为3步来完成。
(1)发现类,类定义了对象将会拥有的特征(属性)和行为(方法)。
(2)发现类的属性,对象所拥有的静态特征在类中表示时称为类的属性。
(3)发现类的方法,对象执行的操作称为类的方法。
2、 定义类
定义类的语法格式如下:
[访问修饰符] class 类名{
//类的内部代码
}
-->访问修饰符如public、private、protected、等是可选的。
-->class是声明类的关键字。
-->按照命名规范,类名首字母大写。
例子:定义一个School类
public class School {
//内部代码
}
3、 属性
Java中类的内部主要包含属性和方法。对象所拥有的特征在类中表示时称为类的属性。
定义属性的语法格式如下:
[访问修饰符] 数据类型 属性名 [= 属性值];
-->访问修饰符时可选的。
-->除了访问修饰符之外,其他的语法和声明变量类似。
例子:在School类中定义相关属性
//定义属性: 数据类型 属性名;
String schoolName;
String address;
int year;
String phoneNumber;
4、 方法
对象执行操作的行为称为类的方法。
定义方法的语法格式如下:
[访问修饰符] 返回类型 方法名称(参数类型 参数名1,参数类型 参数名2,...,参数类型 参数名n){
//方法体代码
}
例子:School类中定义了printInfo()方法
public class School {
//定义属性: 数据类型 属性名;
String schoolName;
String address;
int year;
String phoneNumber;
//定义方法
public void printInfo(){
System.out.println("学校名称:"+schoolName+",地址:"+address+",创办年数:"+year+",联系电话:"+phoneNumber);
}
}
-->访问修饰符是可选的。
-->返回类型可以是void,在定义方法时,返回类型为void时表示没有返回值,方法体中不必使用“return”关键字返回具体数据,但是可以使用“return”关键字退出方法。
-->返回类型如果不是“void”,那么在方法体中一定要使用“return”关键字返回对应类型的结果,否则程序会出现编译错误。
-->小括号中的“参数类型 参数名1,参数类型 参数名2,...,参数类型 参数名n”称为参数列表。
-->当需要在方法执行的时候为方法传递参数时才需要参数列表,如果不需要传递参数就可以省略,不过小括号不可以省略,传递多个参数时,以半角的逗号进行分隔。
5、方法分类
(1)方法按照有无参数分为:
无参方法
有参方法
(2)方法按照有无返回值分为:
无返回值的方法
有返回值的方法
(3)综上所述方法分为:
无返回值的无参方法
无返回值的有参方法
有返回值的无参方法
有返回值的有参方法
例子:定义一个Demo01类,添加以上四种方法;
public class Demo01 {
//无返回值的无参方法
public void test1(){
System.out.println("我是没有返回值的方法");
}
//有返回值的无参方法
public String test2(){
String str = "hello java";
return str;
}
//无返回值的有参方法
public void test3(int num1,int num2){
System.out.println("你传递的两个参数数据是:"+num1+","+num2);
}
//有返回值的有参方法
public int test4(int num1,int num2,int num3){
return num1+num2+num3;
}
}
定义一个Demo01Test类,来使用上面的Demo01类对象,和方法:
public class Demo01Test {
public static void main(String[] args) {
//创建Demo01的对象,通过对象来调用Demo01类中的test1()和test2()方法
Demo01 d1 = new Demo01();
d1.test1();
String result =d1.test2();
System.out.println(result);
System.out.println(d1.test2());
d1.test3(10, 20);
int a =100;
int b =200;
//调用有参方法的时候,传递的a和b是实际参数,简称实参,形参和实参的名称不需要一样,但是数据类型要一样
d1.test3(a, b);
int result2 =d1.test4(100, 200, 185);
System.out.println(result2);
System.out.println(d1.test4(10, 20, 30));
}
}