JAVA基础课程
第八天
面向对象
递归方法
一个方法体内调用了它自身
方法递归包含了一种隐式的循环,它会重复执行某段代码,但是这种重复执行无需循环控制
递归一定要向已知方向递归,否者会变成无穷递归或者死递归
例子:循环1——100之间的自然数的和
package com.test.base;
/**
* 〈求和计算〉
*
* @author PitterWang
* @create 2020/4/25
* @since 1.0.0
*/
public class AndTest {
public static void main(String[] args) {
AndTest andTest = new AndTest();
System.out.println(andTest.backSum1(100));
}
/***
* 求1-max的和
* @param max
* @return
*/
public int backSum(int max){
int sum = 0;
for(int i = 1;i<=max;i++){
sum += i;
}
return sum;
}
/***
* 求1-max的和
* @param max
* @return
*/
public int backSum1(int max){
int sum = 0;
if(max >= 1){
sum = max + backSum1(max-1);
}
return sum;
}
}
封装
(1)为什么要使用封装?
程序设计追求“高内聚,低耦合”
高内聚:类的内部数据操作细节完成,不允许外部干涉
低耦合:仅对外暴露少量的方法使用
我们创建一个类的对象以后,我们可以通过“对象.属性”的方式访问对象的属性进行赋值。实际问题中,我们要对属性进行一定的限制。避免用户直接访问属性,需要将属性声明为私有的(private),此时,针对属性就体现了封装性
(2)封装性的体现
将类的属性设为private,然后根据(get)和(set)方法进获取和设值
四种权限修饰符
修饰符 | 类内部 | 同一个包 | 不同包的子类 | 同一个工程 |
---|---|---|---|---|
private | yes | |||
缺省 | yes | yes | ||
protected | yes | yes | yes | |
public | yes | yes | yes | yes |
修饰类及类的内部结构:属性,方法,构造器,内部类
修饰类只能用:public,或者缺省
构造器/构造方法
作用:
(1).创建对象
(2).初始化对象的信息
说明:
(1).如果没有显示的定义类的构造器的话。则系统默认提供一个空参的构造器
(2).定义构造器的格式:权限修饰符 类名(形参列表){}
(3).一个类中定义的多个构造器,彼此构成重载
(4).一旦我们显式的定义了类的构造器以后,系统就不在提供默认的空参构造器
(5)一个类中,至少有一个构造器
属性赋值的先后顺序
(1)默认初始值
(2)显式初始值
(3)构造器初始值
(4)通过“对象.方法”或者“对象.属性”的方式赋值
JavaBean
Java语言写出的可重用组件
符合如下标准
(1)类是公共的
(2)有一个无参的公共的构造器
(3)有属性,且有对应的set,get方法
UML类图
this关键字
(1)用来修饰:属性,方法,构造器
(2)修饰属性和方法时,理解为 当前对象 或者 正在创建的对象
(3)说明:在类的方法中,我们可以使用“this.属性”,或者“this.方法”的方法,调用当前对象属性或方法,但是,通常情况下,我们都选择缺省的“this.”.特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用“this.变量”的方法,表明次变量式属性,而非形参
(4)this调用构造器
①我们在类的构造器中,可以显式的使用“this(形参列表)”调用本类中指定的构造器
②构造器中不能通过“this(形参)”方式调用自己
③this(形参列表)必须在方法的首行
④构造器中最多只能调用一个“this(形参列表)”的方式调用其他构造器
package关键字
(1)为了实现项目中类的管理,提供包的概念
(2)使用package声明类或者接口所属的包,声明在源文件首行
(3)包属于标识符,遵循规则
(4)每“."就代表一层目录文件
(5)同一个包下,不能命名同名的类或者接口。不同的包下可以。
import关键字
(1)在源文件中显示使用import结构导入指定包下的类或者接口
(2)声明在包的声明和类的声明直接,导入多个,并列写即可
(3)“xxx.*”可以导入xxx包下的所有结构
(4)java.lang包,或者本类的同包下可以忽略导入
(5)如果导入不同包下的同类名,必须有一个类需要以全类名的方式显示
(6)import static:导入指定类或者接口中的静态结构