这里是Themberfue
本章主要介绍的是Java最重要的面向对象(OOP)的基础
面向对象
Java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对食物的认知,对于大型程序的设计、扩展以及维护都非常友好。
面向对象和面向过程的区别
面向过程编程是一种基于过程(函数)的编程范式,程序通过一系列函数调用实现。它强调的是过程(过程就是一组指令或步骤),数据和函数是分离的。
面向对象编程是一种基于对象的编程范式,程序由一组对象及其交互组成。每个对象包含数据和操作数据的函数(称为方法)。
举个例子:
面向过程的例子 => 洗衣服的步骤 => 1. 收集脏衣服 2. 按颜色和材质分类 3. 将衣服放入洗衣盆 4. 加水 5. 加入洗衣粉.........
面向对象的例子 => 使用洗衣机 => 1. 洗衣机 2. 洗涤程序
类定义和使用
在Java中定义类时需要用到class关键字,具体语法如下
// 创建类
class ClassName{ field; // 字段(属性) 或者 成员变量method; // 行为 或者 成员方法
}
class WashMachine{public String brand; // 品牌public String type; // 型号public double weight; // 重量public double length; // 长public double width; // 宽public double height; // 高public String color; // 颜色public void washClothes(){ // 洗衣服System.out.println("洗衣功能");}public void dryClothes(){ // 脱水System.out.println("脱水功能");}public void setTime(){ // 定时System.out.println("定时功能");}
}
注意事项:
1. 类名注意采用大驼峰定义
2. 成员前写法统一为public,后面会详细解释
类的实例化
定义了一个类,就相当于在计算机中定义了一种新的类型。用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
用上面的例子来实例化对象
public class Main {public static void main(String[] args) {WashMachine washMachine = new WashMachine();washMachine.brand = "联想";washMachine.dryClothes();}
}
注意事项
·new 关键字用于创建一个对象的实例
·使用 . 来访问对象中的属性和方法
·同一个类可以创建多个实例
this引用
this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
class Date {public int year;public int month;public int day;public void setDay(int year, int month, int day){this.year = year;this.month = month;this.day = day;}
}
this引用的特性
·this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
·this只能在"成员方法"中使用
·在"成员方法"中,this只能引用当前对象,不能再引用其他对象
对象的构造及初始化
构造方法
构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且 在整个对象的生命周期内只调用一次。
class Date {public int year;public int month;public int day;// 构造方法:// 名字与类名相同,没有返回值类型,设置为void也不行// 一般情况下使用public修饰// 在创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次public Date(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}
}
构造方法的特性:
·名字必须与类名相同
·没有返回值类型,设置为void也不行
·创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
·构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
·如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。
构造方法中,可以通过this调用其他构造方法来简化代码
class Date {public int year;public int month;public int day;// 无参构造方法--内部给各个成员赋值初始值,该部分功能与三个参数的构造方法重复// 此处可以在无参构造方法中通过this调用带有三个参数的构造方法// 但是this(1900,1,1);必须是构造方法中第一条语句public Date(){//System.out.println(year); 注释取消掉,编译会失败this(1900, 1, 1);}public Date(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}
}
封装
面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。
访问修饰限定符
Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认 知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:
No | 范围 | private | default | protected | public |
1 | 同一包中的同一类 | √ | √ | √ | √ |
2 | 同一包中的不同类 | √ | √ | √ | |
3 | 不同包的子类 | √ | √ | ||
4 | 不同包的非子类 | √ |
多说不易必自毙,剩下的自己去悟吧~~~
static
static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
这里我直接说特性,剩下的还是自己去悟吧😘😘😘
不属于某个具体的对象,是类方法
可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者
不能在静态方法中访问任何非静态成员变量
今天的讲解就到这里,说实话,我这教程写的一般,正经人一般也不会看到这里吧😁👌