方法的重载
1.概述:方法名相同,参数列表不同
2.参数列表不同:
- 参数个数不同
- 参数类型不同
- 参数类型的顺序不同
3.判断方法是否为重载方法,和以下两点有关
- 和返回值类型无关
- 和参数名无关
4.如何使用
- 功能一样,实现细节不一样,考虑用重载方法
public class Demo01 {
public static void main(String[] args) {
sum(1,2);
sum(1,2,3);
sum(1,2,3,4);
}
//两个整数相加
public static void sum(int a,int b){
int sum = a+b;
System.out.println("sum = " + sum);
}
//三个整数相加
public static void sum(int a,int b,int c){
int sum = a+b+c;
System.out.println("sum = " + sum);
}
//四个整数相加
public static void sum(int a,int b,int c,int d){
int sum = a+b+c+d;
System.out.println("sum = " + sum);
}
}
面向对象(java核心思想)
1.面向对象是一种编程思想,就是把别人封装好的具有特定的功能,直接拿来处理问题,与面向过程不同的是,不需要关注其功能怎么实现的,只需要拿来直接使用,方便了编写程序
2.使用方法:
-
new一个对象,点使用
Scanner sc = new Scanner(System.in); sc.nextInt();
-
当调用的功能是静态的(static),无需new,直接类名调用
-
System.out.println(Arrays.toString(arr));
3.因为很多功能别人都封装好了,直接调用省事,方便.
4.一些例子:
a.洗衣服
- 面向过程:拿盆儿,倒水,拿衣服,拿搓衣板,手搓
- 面向对象:找一个全自动洗衣机
类和对象
类(class)
1.概述:一类事物的抽象表示形式
2.属性(成员变量):这类事物有啥
- 定义位置:类中方法外
- 作用范围:作用于整个类
- 可以不用初始化就可以使用(有默认值)
- 定义格式:数据类型 变量名
3.行为(成员方法):这类事物能干啥
- 去掉static,定义格式和调用方式和之前方法的一样
对象
1.概述:一类事物的具体实现
2.使用:
-
导包 import 包名.包名.类名(同一个类不需导包,不同的类需要导包,java.lang包不需要导包)
-
创建对象:想要用哪个类中的成员,就在哪个类new对象
类名 对象名 = new 类名();
-
调用对象
对象名.成员名
匿名对象
没有等号左边的对象
成员变量和局部变量的区别
1.定义位置不同
局部变量:方法内部及参数位置
成员变量:类中方法外
2.初始化值不同
局部变量:没有默认值,需要手动赋值才能使用
成员变量:有默认值
- 整数:0
- 小数:0.0
- 字符:‘\u0000’
- 布尔:false
- 引用:null
3.作用范围不同
局部变量:只作用于方法内部,别的方法用不了
成员变量:作用于整个类
4.内存位置不同
局部变量:在栈中
成员变量:在堆中
5.生命周期不同
局部变量:随着方法的调用而产生,随着方法的调用完毕消失
全局变量:随着对象的创建而产生,随着对象的消失而消失
封装
1.面向对象三大特征: [封装] 继承 多态
2.封装思想:
隐藏对象内部复杂性,只对外提供公开,公共的接口,便于外界调用,提高了系统的可扩展性,可维护性,安全性.把细节隐藏起来,该暴露的暴露出来(提供给外界的接口),我们不需要关注细节怎么实现,只关注公共的接口怎么调用
3.private:最具有封装思想的关键字
将属性用private修饰,此时属性为私有成员,外界不能直接调用,相当于将细节隐藏了起来,
公共接口调用:
- setxxx() -> 为属性赋值
该暴露的暴露出来(提供给外界的接口),我们不需要关注细节怎么实现,只关注公共的接口怎么调用
3.private:最具有封装思想的关键字
将属性用private修饰,此时属性为私有成员,外界不能直接调用,相当于将细节隐藏了起来,
公共接口调用:
- setxxx() -> 为属性赋值
- getxxx() -> 获取属性值