1、面向过程
面向过程 就是分析解决问题所需要的步骤,然后用函数把这些步骤逐一实现,使用的时候依次调用就可以了。面向对象类具有的三个特性:封装性、继承性和多态性。
封装性:封装是面向对象的核心思想。一层含义是指把对象的属性和行为看作是一个密不可分的整体,将这两者封装在一起(即封装在对象中);另一层是指 “ 信息隐藏 ” ,将不想让外界知道的信息隐藏起来。
继承性:继承主要用来描述类与类之间的关系,通过其可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。将其他的功能继承下来继续发展 。
多态性:在一个类中定义的属性和方法被其它类继承后,他们可以具有不同的数据类型或表现出不同的行为。这使得同一种属性和方法在不同的类中具有不同的语义。方法的重载本身就是一个多态性的体现。
2.1、类与对象:
类是具有相同属性和操作的一组对象的集合
类表示某一群体的基本特征抽象,而对象表示一个个具体的事物。
类是用于描述多个对象的共同特征,他是对象的模板。对象是用于描述现实中的个体,他是类的实例(类是对象的抽象,对象是类的实例)。对象是根据类来产生的,一个类可以对应多个对象(类与对象的关系:一对多)。
在面向对象最核心的就是对象,而创建对象的前提是需要定义一个类。类中可以定义成员方法和成员变量
这是类的定义格式:
class 类名称 {
成员变量;
成员方法;
}
局部变量与成员变量的不同:
定义在类中的变量称为成员变量,定义在方法中的变量称为局部变量。在某一个方法中定义的局部变量是允许与成员变量重名的。(成员变量可以不赋值,而局部变量必须要赋值)
2.2对象的创建与使用
创建对象的格式:类名 对象名称 = new 类名();
(1)定义类
public class Car {
private String color;
private int year;
// 构造函数
public Car(String color, int year) {
this.color = color;
this.year = year;
}
// 方法
public void start() {
System.out.println("Car is starting...");
}
// Getter 和 Setter 方法
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}
(2)创建类
Car car = new Car("Red", 2020);
(3)使用类
// 访问属性
System.out.println("Car color: " + car.getColor());
System.out.println("Car year: " + car.getYear());
// 调用方法
myCar.start();
调用成员变量的方法:1.对象.成员变量; 2.对象.成员方法();
2.3 访问控制
Java提供了四种访问控制权限,依次是:private(私有)、default(默认(可以省略))、protected(受保护)、public(公共)。
3 封装性
类的封装是指将对象的状态隐藏在对象的内部,不允许外部程序直接访问对象的内部信息,而是通过该类提供的方法实现内部信息的操作访问。封装的作用:相当于一个保护屏障,防止本类的代码或数据被外部程序随机访问。
被私有化(private)的属性只能在类中被访问,如果外界想要访问私有属性,则必须通过setter(设置)和getter(获取)方法设置和获取属性值。
setter对应的this this关键字 调用类中的内容
getter对应的return return返回值 return
后面必须跟着一个与声明的返回类型相匹配的表达式。如果方法的返回类型是void
,那么return
后面不需要跟任何表达式,它只是用来提前退出方法。
public int add(int a, int b) {
return a + b; // 返回两个整数的和
}
public void printHello() {
System.out.println("Hello");
return; // 虽然可以省略,但尽量不要省略
}
static关键字 可以使对应的属性和方法变成公共的,都可以来访问。
封装方法:右键单击空白处,选择Generate——setter and getter。
4 构造方法
在实例化方法是自动调用(当你使用new
关键字创建一个对象时,Java会自动调用与对象类型匹配的构造方法。)
构造方法要注意的:
- 构造方法的名称必须与类名完全相同。
- 构造方法没有返回类型,甚至连
void
也没有。 - 每个类可以有多个构造方法,只要它们的参数列表不同(即构造方法的重载)。
- 不能再构造方法中使用return返回一个值,但是可以单独写return语句作为方法的结束。
- 在Java中的每个类都至少有一个构造方法,如果一个类中没有定义构造方法,系统则会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数。
//例如以下两种: //第一种 class Student{ //这种虽然没有声明,但是可以用new Student()语句Student的实例对象 } //和下面这一种 class Stedent { public Student(){ } }
构造方法的重载:构造方法也可以重载,在一个类中可以定义多个构造方法,只要每个构造方法的参数类型或参数个数不同即可。
构造方法通常使用public进行修饰。因为构造方法通常是类外调用,所以其访问权限不能设为private
构造方法:右键单击空白处,选择Generate——constructor
5 this关键字
this关键字的作用:当成员变量与内部变量重名时,需要使用this关键字分辨成员变量与内部变量。
主要作用:
(1) 使用this关键字调用本类中的属性。 this.属性; //相当于成员变量
(2)使用this关键字调用成员方法。 this.方法; //调用同一个类中的普通方法
(3)使用this关键字调用本类的构造方法。 this(参数); //调用构造方法
Java里在使用this调用类的构造方法时,应注意以下几点
- 只能在构造方法中使用this调用其他构造方法,不能在成员方法中使用this调用其他构造方法。
- 使用
this
调用构造方法必须放在构造方法的第一条语句。且只能出现一次。 - 不能再一个类的两个构造方法中使用this互相调用。
6 代码块
在Java中,代码块指的是用大括号{}
包围的一段代码。代码块可以在多个地方使用,比如在方法中、循环中、条件语句中等。
public void exampleMethod() {
{
int localVar = 10; // 只在当前代码块内部可见
}
// localVar 在这里不可见
}
构造块的执行顺序优于构造方法。
7 static关键字
如果希望某些属性被所有对象共享,就必须将其声明为static属性。如果属性使用了static关键字进行修饰,则该属性可以直接使用类名称进行调用。除了修饰属性,static关键字还可以修饰成员方法和代码块。
如果在Java程序中使用static修饰属性,则该属性称为静态属性(也称全局属性),静态属性可以使用类名直接访问。
(1)它为该类的公用变量
(2)被该类的所有对象共等3面向对象(上)77
(3)调用方法:类名、静态变量
类的实例、静态变量名