面向对象编程三大特征:
封装,继承,多态
类:属性(成员变量),方法(函数)
对象:类的实例化
调用:对象.属性, 对象.方法
注:对象的成员变量是在堆中,不是在栈中哦!
可变个数的形参
格式:方法名(参数的类型名 ...参数名)(方法的参数部分有可变形参,需要放在形参的最后, 且最多一个)
注:使用可变多个形参的方法与方法的形参使用数组是一致的,不能构成重载,编译器会认为是一样的函数。
public void sayHello(String ... str) { } //可变多个形参的方法
public void sayHello(String[] ss) { } //方法的形参使用数组
方法的参数传递
传递参数的值不行,必须传递参数的地址(引用类型:数组的地址、类的属性)
swap(int[] arr, int i, int j);arr为数组,i, j 分别为位置
swap(int d.i, int d.j);d是一个类,i, j分别为类d的属性
swap(int arr[i], int arr[j]); 错误做法,传递的只是一个值
1.封装与隐藏
如果直接通过“对象.属性”方式对属性赋值的话,可能出现不满足实际情况的意外,考虑“对象.方法”形式,来控制对象的属性。(实际情况中,对属性的要求可以通过方法来实现)
解决方法:(1)将类的属性私有化(private),(2)提供公共的(public) 方法来实现(setter & getter)
四种访问权限修饰符:
2.类的第三个成员:构造器(constructor 构造方法)
其实就相当于C++中的构造函数
1.创建对象
2.给类的属性赋值
Java中,每个类至少一个构造器
默认构造器的修饰符与所属类的修饰符一致
显示定义构造器后,系统不提供默认构造器
一个类可以创建多个重载的构造器
父类的构造器不可被子类继承
3.类对象的属性赋值的先后顺序:
属性的默认初始化 > 属性的显式初始化> 构造器给属性初始化 > 通过“对象.方法”的方式给属性赋值
4.关键字:
(1)this :表示当前对象(实例化的类)或当前正在创建的对象
可以调用类的属性,方法和构造器。
在方法内部使用,即这个方法所属对象的引用。
在构造器内部使用“this(形参)”的方式显式的调用本类中其他重载的指定的构造器。
1.使用this(), 必须在构造器的首行
2.若一个类中有n个构造器,那么最多有n-1个构造器中能使用this。
当在方法内部需要调用该方法的对象时,就用this
class Person { private String name; private int age; //在构造器内部使用“this(形参)”的方式显式的调用本类中其他重载的指定的构造器。 Person(String name){ this.name = name;} Person(String name, int age){ this(name); //调用的是上面那个重载的构造器 this.age = age;} public setName(String name){ this.name = name;//避免重名的时候系统辨别不清楚 } };
(2)package: 声明源文件所在的包,写在程序的第一行
每“.”一次,表示一层文件目录
包名都要小写
(3)import:
1)显式导入指定包下的类或接口
2)写在包的声明和源文件之间
3)如果需要引入多个类或接口,并列写出来
4)如果导入的是java.lang包下的,如System, String, Math等,就不用显式的声明
5)java.util.*
6)处理同名类的导入:在util和sql包下同时存在Date类,则一个使用import,另外一个只能显式的调用new java.sql.Date(12546121654L)
7)import static表示导入指定类的static的属性或方法
8)关于子包:import java.lang.*只能导入lang包下的所有类或接口,不能导入lang的子包下的类或接口。
JDK中主要的包介绍
1. java.lang----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread,提供常用功能。
2. java.net----包含执行与网络相关的操作的类和接口。
3. java.io ----包含能提供多种输入/输出功能的类。
4. java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。
5. java.text----包含了一些java格式化相关的类
6. java.sql----包含了java进行JDBC数据库编程的相关类/接口
7. java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界 面(GUI)。
8. java.applet----包含applet运行所需的一些类。