学习面向对象内容的三条主线
Java类及类的成员:(重点)属性、方法、构造器;(熟悉)代码块、内部类
面向对象的特征:封装、继承、多态、(抽象)
其他关键字的使用:this、super、package、import、static、final、interface、abstract等
面向过程
面向过程是以函数为基准,适合解决简单问题。
面向对象
面向对象是以类为基准。
面向对象 (Object Oriented Programming,OOP) ,是软件开发中的一类编程风格、开发范式。除了 面向对象 ,还有 面向过程 、 指令式编程 和 函数式编程 。在所有的编程范式中,我们接触最多的还是面向过程和面向对象两种。
类:具有相同特征的事物的抽象描述,是 抽象的 、概念上的定义。
对象:实际存在的该类事物的 每个个体 ,是 具体的 ,因而也称为 实例(instance) 。
面向对象三大步骤
1.创建类,写类的属性和方法
2.创建类的对象
3.通过对象,调用类的属性和方法
public class Phone { //属性,就是一类事物的标志 String name; int price; //方法,一类事物的动作 public void call(){ System.out.println("这款手机可以拨打电话"); } public void listenMusic(){ System.out.println("这款手机可以听音乐"); } public void sendMessage(String message){ System.out.println("你发送的内容为"+message); } }
public class PhoneTest { public static void main(String[] args) { Phone phone = new Phone(); phone.name = "IPHONE16PROMAX"; phone.price = 9999; // 调用类的属性 System.out.println("这款手机的名字是"+phone.name+"这款手机的价格是$"+phone.price); // 调用类的方法 phone.call(); phone.listenMusic(); phone.sendMessage("我爱你啊,龙蛋,哈哈哈哈哈"); } }
面向对象内存解析
方法
[修饰符] 返回值类型 方法名([形参列表])[throws 异常列表]{ 方法体的功能代码 }
(1)一个完整的方法 = 方法头 + 方法体。
方法头就是 [修饰符] 返回值类型 方法名([形参列表])[throws 异常列表] ,也称为 方法签名 。通 常调用方法时只需要关注方法头就可以,从方法头可以看出这个方法的功能和调用格式。 方法体就是方法被调用后要执行的代码。对于调用者来说,不了解方法体如何实现的,并不影响方 法的使用。
2)方法头可能包含5个部分
(3)方法体:方法体必须有{}括起来,在{}中编写完成方法功能的代码
方法的重载
可变个数的形参
在JDK 5.0 中提供了Varargs(variable number of arguments)机制。即当定义一个方法时,形参的类型可以确定,但是形参的个数不确定,那么可以考虑使用可变个数的形参。
方法名(参数的类型名 ...参数名) //JDK 5.0以前:采用数组形参来定义方法,传入多个同一类型变量 public static void test(int a ,String[] books); //JDK5.0:采用可变个数形参来定义方法,传入多个同一类型变量 public static void test(int a ,String...books);
方法的参数传递机制
递归方法
递归方法调用:方法自己调用自己的现象就称为递归。
递归的分类:直接递归、间接递归。
直接递归:方法自身调用自己。
public void methodA(){ methodA(); }
间接递归:可以理解为A()方法调用B()方法,B()方法调用C()方法,C()方法调用A()方法。
public static void A(){ B(); } public static void B(){ C(); } public static void C(){ A(); }
对象数组
数组的元素可以是基本数据类型,也可以是引用数据类型。当元素是引用类型中的类时,我们称为对象数组。
引用类型(Reference Types)是Java中的一种数据类型,它包括类(Class)、接口(Interface)和数组(Array)。引用类型用于存储对象的引用,而不是对象本身。通过引用类型,我们可以访问和操作所引用的对象。
对象数组,首先要创建数组对象本身,即确定数组的长度,然后再创建每一个元素对象,如果不创建,数组的元素的默认值就是 null ,所以很容易出现 空指针异常NullPointerException 。
常用包
java.lang ----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread,提供常用功能java.net ----包含执行与网络相关的操作的类和接口。
java.io ----包含能提供多种输入/输出功能的类。
java.util ----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。 java.text ----包含了一些java格式化相关的类
java.sql ----包含了java进行JDBC数据库编程的相关类/接口
java.awt ----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
Java面向对象特性
封装性
为什么要使用封装性
为了实现面向对象开发原则(高内聚、低耦合)
高内聚
类的内部细节自己完成,不允许外部干涉
低耦合
仅暴露少量方法给外部类使用
Java通过四种修饰符(public、却省、protected、private)实现封装性
在实际开发中,public和private使用最常用!
在Java中,属性一般使用private 然后使用set和get方法获取属性值 set一般是无返回值用void(并且括号内用其他变量名去获取属性)如下面例子 get一般用返回值类型 private int age; public viod setAge(int a){ age = a; } public int getAge(){ return age; }
构造器
为什么要使用构造器
new对象,并在new对象的时候为实例变量赋值。
例如下面代码
Scaner scaner = new Scanner(System.in); //有参数型 Person person = new Person(); //无参型 //构造器 public Person(int a){ age = a; }
JavaBean
所谓JavaBean,是指符合如下标准的Java类:
类是公共的
有一个无参的公共的构造器
有属性,且有对应的get、set方法
public class JavaBean { private String name; // 属性一般定义为private private int age; public JavaBean() { } public int getAge() { return age; } public void setAge(int a) { age = a; } public String getName() { return name; } public void setName(String n) { name = n; }
UML类图
UML(Unified Modeling Language,统一建模语言),用来描述 软件模型 和 架构 的图形化语言。
UML(Unified Modeling Language,统一建模语言),用来描述 软件模型 和 架构 的图形化语言。常用的UML工具软件有 PowerDesinger 、 Rose 和 Enterprise Architect 。
UML工具软件不仅可以绘制软件开发中所需的各种图表,还可以生成对应的源代码。
在软件开发中,使用 UML类图 可以更加直观地描述类内部结构(类的属性和操作)以及类之间的关系(如关联、依赖、聚合等)。
+表示 public 类型, - 表示 private 类型,#表示protected类型
方法的写法: 方法的类型(+、-) 方法名(参数名: 参数类型):返回值类型
斜体表示抽象方法或类。
结语
我是南城余!欢迎关注我的博客!一同成长!
一名从事运维开发的worker,记录分享学习。
专注于AI,运维开发,windows Linux 系统领域的分享!