6.4、自定义类【重点】
6.4.1 类的创建
创建类的格式:
[访问修饰符] <class> <类名> { //定义类的成员 ... } |
创建类的对象:又称创建类的实例,实例即对象,有的时候我们又称将类实例化。
<类名> <对象名>=<new 类名()>; |
6.4.2 访问修饰符
访问修饰符声明类或者属性与行为的访问权限。
public:在任何地方都可以访问该资源。
private:私有的,只有本类可以访问,一般用在属性上。
6.4.3声明类的属性:
[访问修饰符] <数据类型> <属性名>; |
访问类的属性:
本类访问:
取值:this.<属性名>; 赋值:this.<属性名> = <值>; |
非本类访问:
取值:<对象名>.<属性名>; 赋值:<对象名>.<属性名> = <值>; |
6.4.4声明类的方法
什么是方法:即行为,方法是由一段代码块组成的整体,调用方法,就可以执行相应的代码块。
[访问修饰符] <返回数据类型|void> <方法名>([参数列表]) { //方法体; } |
格式一:无参数无返回值的方法
[访问修饰符] <void> <方法名>() { //方法体; } |
格式二:无参数有返回值的方法
[访问修饰符] <返回值类型> <方法名>() { //方法体; } |
格式三:有参数无返回值的方法
[访问修饰符] <void> <方法名>([数据类型 参数1],[数据类型 参数2], … [数据类型 参数N]) { //方法体; } |
格式四:有参数有返回值的方法
[访问修饰符] <返回值类型> <方法名>(<数据类型 参数1>,[数据类型 参数2], … [数据类型 参数N]) { //方法体; } |
方法中的概念
参数:完成某个特定功能,所需要的加工处理的数据。
形式参数:定义方法时,定义的参数列表叫做形式参数,简称形参。
实际参数:调用方法时,实际传递的参数叫做实际参数,简称实参。
方法原型:例如int org.jayce.bean.Cal.add(int num1, int num2)。
方法的调用:
本类访问:
[this].<方法名>(); |
非本类访问:
<对象名>.<方法名>; |
6.4.5引用传递与值传递案例 - 值传递:指的是在调用方法时,传递的参数是数据的副本,当参数是基本数据类型时,方法传参采用的是值传递。
public void change1(int number) { number++; System.out.println("方法内的number:" + number); } public static void main(String[] args) { Operate operate = new Operate(); int number = 10; operate.change1(number); System.out.println("main方法内的number:" + number); } 运行结果: 方法内的number:11 main方法内的number:10 |
案例 – 引用传递:指的是在调用方法时,传递的参数是数据的内存地址,当参数是引用数据类型时,方法传参采用的是引用传递。
public void change2(int[] numbers) { for (int i = 0; i < numbers.length - 1; i++) { for (int j = 0; j < numbers.length - i - 1; j++) { if (numbers[j] > numbers[j + 1]) { int temp = numbers[j]; numbers[j] = numbers[j + 1]; numbers[j + 1] = temp; } } } System.out.println("\n---------------方法内排序后的结果-----------------\n"); for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); } } public static void main(String[] args) { Operate operate = new Operate(); int[] numbers = { 1, 34, 2, 36, 7 }; operate.change2(numbers); System.out.println("\n---------------main方法内排序后的结果-----------------\n"); for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i]+" "); } } 运行结果: ---------------方法内排序后的结果----------------- 1 2 7 34 36 ---------------main方法内排序后的结果---------- 1 2 7 34 36 |
6.4.6构造方法
什么是构造方法:创建类的对象时使用构造方法对对象的成员进行初始化。
构造方法是一个特殊的方法。
构造方法没有返回类型。
构造方法名称必须与类名一致。
系统默认提供了一个空的构造方法。
new关键字是用来调用构造方法。
示例:
public Employee(String employeeName, String dutyName, int age, int salary) { this.employeeName = employeeName; this.dutyName = dutyName; this.age = age; this.salary = salary; } |
6.4.7 setter、getter方法:
案例:实现一个银行卡类,其中包括卡号、卡的拥有者姓名、余额三个属性,卡号自动生成,不可更改,余额不能是负数,如果是负数,设置为0,编写一个方法,用来显示卡的基本信息;
public class Card { public Card() { this.cardNumber = UUID.randomUUID().toString(); } private String cardNumber; private String owenName; private int balance; public String getCardNumber() { return this.cardNumber; } public void setOwenName(String owenName) { this.owenName = owenName; } public String getOwenName() { return this.owenName; } public int getBalance() { return balance; } public void setBalance(int balance) { if (balance >= 0) this.balance = balance; else this.balance = 0; } public void show() { System.out.println("\n---------银行卡的信息----------\n"); System.out.println("卡号:" + this.cardNumber); System.out.println("姓名:" + this.owenName); System.out.println("余额:" + this.balance); } } |
格式:
public 数据类型 get属性名[首字母转大写]() { return 属性名; } public void set属性名[首字母转大写](数据类型 属性名) { this.属性名 = 属性名; } |
作用:提升属性的安全的,使属性可以灵活的实现只读、只写、输入验证等功能。
6.4.8类的成员有哪些?
构造方法
属性
方法(行为)
setter、getter方法
6.5、方法重载【重点】
概念:在一个类中,存在同名不同参的方法我们称其为方法重载。不同参指的的是:
参数个数不同:
public void goHome() {} public void goHome (String car) {} |
参数类型不同:
public void calArea(int len) {} public void calArea (double r) {} |
参数顺序不同:
public double calSalary(int startPoint, double rate) { } public double calSalary(double rate ,int startPoint) { } |
错误的重载:
public void calArea (int width,int height) {} public void calArea (int height,int width) {} |
6.6、小结
将一类事物的共同特征、共同行为整合在一起,形成一个类,隐藏内部的实现细节,只对外部开放部分功能,保证了类的安全,内部修改不影响外部的使用,我们称其为封装。【重点】
万物皆对象,现实世界当中存在的具体事物。【重点】
类是提取事物的共性(共同特征和行为)产生的模板。【重点】
提取事物的共性的过程是抽象。【重点】
访问修饰符是用来限定类和属性与方法的访问权限的,public是公有的,private是私有的。【重点】
类的成员有:构造方法、属性、方法、Setter方法、Getter方法。【重点】
构造方法用来对类的对象进行初始化,必须与类名相同,不能有返回值类型。【重点】
方法根据参数可分为带参数与无参数的方法,根据返回值分为无返回值与有返回值的方法。【重点】
Setter、Getter方法一般用来保证属性的安全性。【重点】