方法定义与重载
将相同的代码进行封装,通过调用使用,可以重用代码
方法的完整定义方式
修饰符 返回值类型 方法名(参数列表){
方法体
return 返回值
}
return :
1,为了将返回值交给调用处
2,表示方示结束
返回值类型:计算结果的数据类型 ,如果没有计算机结果(不需要返回)写void
1,基本基本
byte short int long float double char boolean都可以作为返回值类型
2,引用类型
String..
注意事项:
1,定义位置类中方法外
2,参数列表,有未知量
3,返回值类型,方法内要return 返回值; 调用可以定义变量接收
4,返回值类型,必须跟返回的结果一致
方法的调用流程
1,从调用处找到这个方法
2,传参,将调用处的实际数据传给参数列表
3,执行方法体计算得到结果
4,通过return 返回值; 将结果交给调用处
方法的三种调用格式
直接调用
赋值调用
打印调用
方法重载
减少程序员记忆有负担,在同一个类中,多个功能一样的方法写成方法名相同。参数列表必须不同
参数类型不同
参数个数不同
参数顺序不同
参数的变量名不同不行
权限修饰符
在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限,
public:公共的。 protected:受保护的 default:默认的 private:私有的
public > protected > 默认的 > private
a).public 公有的,任何地方都可以访问
b).private 私有的,只有本类可以访问
c).protected 受保护的, 同包才可以访问 ,强调的是给子类访问
d).不写 默认的, 同包才可以访问
建议这样使用权限:
成员变量使用 private ,隐藏细节。
构造方法使用 public ,方便创建对象。
成员方法使用 public ,方便调用方法。
不加权限修饰符,其访问能力与default修饰符相同
final关键字
final : 关键字表示的最终的,最后的程序员,最牛的
用来修饰:类、方法、成员变量、局部变量
final修饰类:
被final修饰的类,不能有子类,称为,”太监类”,final 与abstract 不能同时修饰类
final修饰方法:
不以被子类覆盖重写
final修饰局部变量:
被final修饰后,只能赋值一次,不能再更改。
final修饰成员变量:
初始化方式有两种,只能二选一:
一:显示初始化(直接赋值)
二:构造方法初始化
静态的成员变量(静态常量)必须直接赋值
例如:public static final double PI = 3.14;
静态常量明命名:每个单词大写,用 ”_” 符号分开
final修饰引用类型变量
被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部的成员变量值的 修改
public class FinalDemo2 {
public static void main(String[] args) {
// 创建 User 对象
final User u = new User();
// 创建 另一个 User对象
u = new User(); // 报错,指向了新的对象,地址值改变。
// 调用setName方法
u.setName("张三"); // 可以修改
}
}
内部类
将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。
成员内部类:
定义在类中方法外
定义格式:
class 外部类 {
class 内部类{
}
}
public class Person {
private boolean live = true;
class Heart {
public void jump() {
// 直接访问外部类成员
if (live) {
System.out.println("心脏在跳动");
} else {
System.out.println("心脏不跳了");
}
}
}
public boolean isLive() {
return live;
}
public void setLive(boolean live) {
this.live = live;
}
}
访问特点:
内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的成员,必须要建立内部类的对象。
创建内部类对象格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
public static void main(String[] args) {
// 创建外部类对象
Person p = new Person();
// 创建内部类对象
Heart heart = p.new Heart();
// 调用内部类方法
heart.jump();
// 调用外部类方法
p.setLive(false);
// 调用内部类方法
heart.jump();
}
局部内部类
类中方法中
public class 外部类名{
public void method(){
class 局部内部类{
//
}
//使用.
}
}
匿名内部类:
匿名内部类必须继承一个父类或者实现一个父接口
new 父类名或者接口名(){
// 重写所有抽象方法
@Override
public void method() {
// 执行语句
}
};
new 抽象类/接口(){
//重写所有的抽象方法
}.成员方法名();
示例:
public class Demo {
public static void main(String[] args) {
new Thread(){
@Override
public void run() {
System.out.println("这是一个匿名内部类");
}
}.start();
}
}