面向过程和面向对象的区别
面向过程(Procedure Oriented)是一种以过程为中心的编程思想,它关注的是将问题分解成一个个详细的步骤,并通过函数实现每一个步骤,然后依次调用这些函数来解决问题。常见的面向过程的语言有C语言。
面向对象编程(Object-Oriented Programming,简称OOP)是一种计算机编程模型,它围绕数据或对象来组织软件设计,而不是围绕功能和逻辑。在面向对象的编程中,更强调对象与对象之间的交互,对象的属性和方法都被封装在对象内部。面向对象编程具有封装性、继承性和多态性三大特性。常见的面向对象的语言有Java,Python,PHP等。
类和对象
什么是类
类是一类具有相同特性的事物的抽象描述,是一组相关属性和行为的集合。
属性:就是该事物的状态信息。
行为:就是在你这个程序中,该状态信息要做什么操作,或者基于事物的状态能做什么。
什么是对象
对象是一类事物的一个具体个体(对象并不是找个女朋友)。即对象是类的一个实例,必然具备该类事物的属性和行为。
类与对象的关系
-
类是对一类事物的描述,是抽象的。是相同属性和方法的一组对象的集合。
-
对象是一类事物的实例,是具体的。
-
类是对象的模板,对象是类的实体。是能够看的到,摸得到的具体实体。
-
世间万物皆对象
如何定义类
类的定义格式
【修饰符】 class 类名{
}
举例
public class Student{
}
对象的创建
格式
new 类名()//也称为匿名对象
//给创建的对象命名
//或者说,把创建的对象用一个引用数据类型的变量保存起来,这样就可以反复使用这个对象了
类名 对象名 = new 类名();
对象名中存储的是什么呢?答:对象地址
包(Package)
包的作用
(1)可以避免类重名:有了包之后,类的全名称就变为:包.类名
(2)可以控制某些类型或成员的可见范围
如果某个类型或者成员的权限修饰缺省的话,那么就仅限于本包使用。
(3)分类组织管理众多的类
如何声明包
格式:
package 包名;
notice:
(1)必须在源文件的代码首行
(2)一个源文件只能有一个声明包的package语句
包的命名规范和习惯:
(1)所有单词都小写,每一个单词之间使用.分割
(2)习惯用公司的域名倒置开头
如何跨包使用类
注意:只有public的类才能被跨包使用
(1)使用类型的全名称
例如:java.util.Scanner input = new java.util.Scanner(System.in);
(2)使用import 语句之后,代码中使用简名称
import语句告诉编译器到哪里去寻找类。
import语句的语法格式:
import 包.类名;
import 包.*;
成员变量
如何声明成员变量
格式:
【修饰符】 class 类名{
【修饰符】 数据类型 成员变量名;
}
eg:
public class Person{
String name;
char gender;
int age;
}
对象的实例变量
实例变量的特点
实例变量的值是属于某个对象的
-
必须通过对象才能访问实例变量
-
每个对象的实例变量的值是独立的
实例变量的访问
package com.haogu.test03.field;
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "张三";
p1.age = 23;
p1.gender = '男';
Person p2 = new Person();
/*
(1)实例变量的值是属于某个对象的
- 必须通过对象才能访问实例变量
- 每个对象的实例变量的值是独立的
(2)实例变量有默认值
*/
System.out.println("p1对象的实例变量:");
System.out.println("p1.name = " + p1.name);
System.out.println("p1.age = " + p1.age);
System.out.println("p1.gender = " + p1.gender);
System.out.println("p2对象的实例变量:");
System.out.println("p2.name = " + p2.name);
System.out.println("p2.age = " + p2.age);
System.out.println("p2.gender = " + p2.gender);
}
}
静态成员
静态成员:
静态成员变量(由static修饰,内存加载一次):常表示在线人数需要被共享的信息,可以被共享访问。
同一类中静态成员变量的访问可以省略类名。同一个类中,访问静态方法,类名可以省略不写【这点就可以解释在主函数main中,可以不用写类名,直接写方法名就可以用这个方法。