方法重载
方法名重复,形参列表不同
同一个类,相同的方法名
参数列表不同:参数个数不同,参数类型不同
注意:方法的重载与形参名、权限修饰符、返回值类型都没有关系
Java里方法的参数传递方式只有一种:值传递
递归方法:自己调用自己的现象就成为递归
直接递归:方法自身调用自己
间接递归:A()调用B(),B()调用C(),C()调用A()
递归方法包含了一种隐士的循环,递归一定要向已知方向递归,否则变成无穷递归会导致栈内存溢出
计算1-n的值
public class Main {
public static void main(String[] args) {
//计算1-n的和
Main demo =new Main();
int num=5;
int sum=demo.getSum(num);
System.out.println(sum);
}
public int getSum(int n){
if(n==1){
return 1;
}
return n+getSum(n-1);
}
}
递归调用会占用大量的堆栈,内存耗用多,尽量避免使用
关键字:import、package
package
package又称为包,知名该文件中定义的类、接口等结构所在的包
package 顶层包名.子包名 ;
举例:pack1\pack2\PackageTest.java
一个源文件只能有一个声明包的 package 语句
• package 语句作为 Java 源文件的第一条语句出现。若缺省该语句,则指定为无名包。
• 包名,属于标识符,满足标识符命名的规则和规范(全部小写)、见名知意
– 包通常使用所在公司域名的倒置:com.atguigu.xxx。
– 大家取包名时不要使用" java.xx "包
• 包对应于文件系统的目录,package 语句中用 “.” 来指明包(目录)的层次,每.一次就
表示一层文件目录。
• 同一个包下可以声明多个结构(类、接口),但是不能定义同名的结构(类、接口)。
不同的包下可以定义同名的结构(类、接口)
import(导入)
import pack1.pack2.Test;
• import 语句,声明在包的声明和类的声明之间。
• 如果需要导入多个类或接口,那么就并列显式多个 import 语句即可
• 如果使用 a.* 导入结构,表示可以导入 a 包下的所有的结构。举例:可以使用
java.util.*的方式,一次性导入 util 包下所有的类或接口。
• 如果导入的类或接口是 java.lang 包下的,或者是当前包下的,则可以省略此 import
语句。
• 如果已经导入 java.a 包下的类,那么如果需要使用 a 包的子包下的类的话,仍然需要
导入。
• 如果在代码中使用不同包下的同名的类,那么就需要使用类的全类名的方式指明调用
的是哪个类。
面向对象的特征之一:封装性
面向对象的开发原则是:高内聚、低耦合
Java如何实现数据封装
依赖访问控制修饰符,也叫权限修饰符
类的成员之三:构造器
作用:new 对象,并在new的时候为示例变量赋值
关键字:this
他在示例方法或非static的方法内部使用,表示调用该方法的对象
this可以作为一个类中构造器相互调用格式
this():调用本类的无参构造器
this(实参列表):调用本类的有参构造器
面向对象特征二 继承性
1.子类会继承父类所有的实例变量和示例方法
2.子类不能直接访问父类私有的成员变量和方法
3.继承关键字为extends,即子类不是父类的子集而是父类的扩展
4,java支持多层继承
5.一个父类可以同时拥有多个子类
6.java只支持单继承,不支持多重继承
方法的重写:
子类可以对从父类中继承来的方法进行改造,我们称为方法的 重写 (override 、 overwrite) 。也称为方法的 重置 、 覆盖
关键字:super
在java中可以使用super来调用父类中的指定操作:
• super 可用于访问父类中定义的属性
• super 可用于调用父类中定义的成员方法
• super 可用于在子类构造器中调用父类的构造器
使用场景:
子类重写了父类的方法,想调用父类的方法
子类中调用父类同名的成员变量
子类构造器中掉用父类的构造器
规定:super(形参列表)必须声明在构造器的首行