1.面对对象编程
面向过程: 分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,通过依次调用函数来解决问题
面向对象: 分析问题涉及哪些对象(事物),然后通过调用对象的方法(行为)来解决问题。
2.类与对象
类:类是某类群体基本特征的抽象,它只是一个模板,不是客观存在的具体事物。
对象:客观存在的事物都是对象。( 万物皆对象)
类和对象的区别:类是抽象的概念,仅仅代表事物的模板,比如说“女朋友”、“学生”。 对象是指具体的事物,一个能够“看得到,摸得着的”具体的实体,比如石榴姐。
类与对象的关系: 类是具有相同特征(属性)和行为(方法)的一组对象的集合(一个类可对应多个对象)。
类的定义:
class 类名{
成员变量;
成员方法;
}
可以理解为:自定义的数据类型
对象的创建与使用:
创建:
类名 对象名称 = null;//声明对象
对象名称 = new 类名();//实例化对象
类名 对象名称 = new 类名();//声明对象的同时实例化对象
使用:
对象名称.属性名
对象名称.方法名
例如,创建Student类的实例对象,示例代码如下: Student stu = new Student();
上述代码中,new Student() 用于创建Student类的一个实例对象,Student stu则是声明了一个Student类型的变量stu。运算符 “=”将新创建的Student对象地址赋值给变量stu,变量stu引用的对象简称为stu对象。
成员变量和局部变量不同:
对象的引用传递:
如果想进行引用传递分析,那么首先需要先清楚两块内存。
(1)堆内存:堆内存可以理解为一个对象的具体信息,每一个对象保存的只是属性信息,每一块堆内存的开辟都要通过关键字 new 来完成。
(2)栈内存:可以理解为一个整型变量( 只能够保存一个数值 ),其中保存的是一块( 只能保存一块 )堆内存空间的内存地址数值,为了方便理解,可以假设其保存的是对象的名字。
先通过对象的实例化操作了解内存分配。
包和访问控制:
包(package)
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
包的作用
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2、包可以避免名字冲突。
包语句的语法格式为: package pkg1[.pkg2[.pkg3…]];
例子: package com.qq.news;
package com.qq.sports;
import
关键字 为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用 "import" 语句可完成此功能。
在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以没有,也可以有多条,其语法格式为: import package1[.package2…].(classname|*); 如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略。
注意:
类文件中可以包含任意数量的 import 声明。import 声明必须在包声明之后,类声明之前。
四种访问权限:
4种访问控制权限,具体介绍如下。
(1)private(当前类访问级别):private属于私有访问权限,用于修饰类的属性和方法。类的成员一旦使用了private关键字修饰,则该成员只能在本类中进行访问。
(2)default:如果一个类中的属性或方法没有任何的访问权限声明,则该属性或方法就是默认的访问权限,默认的访问权限可以被本包中的其它类访问,但是不能被其他包的类访问。
(3)protected:属于受保护的访问权限。一个类中的成员使用了protected访问权限,则只能被本包及不同包的子类访问。
(4)public:public属于公共访问权限。如果一个类中的成员使用了public访问权限,则该成员可以在所有类中被访问,不管是否在同一包中。
封装:
封装:是将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
为什么要封装:
封装可以被认为是一个保护屏障,防止本类的代码和数据被外部类定义的代码随机访问。
怎样实现封装:
(1)属性私有化
(2)定义公共的setter和getter方法
封装的优点
-
1. 良好的封装能够减少耦合。
-
2. 类内部的结构可以自由修改。
-
3. 可以对成员变量进行更精确的控制。
-
4. 隐藏信息,实现细节。
实现java封装的步骤:
public class Person
{ private String name;
private int age; }