依赖
聚合
注意
规则
显式参数:传入方法的参数
<!--实现-->
public void raise(double ByPercent){
double raise = this.salary * ByPercent;
}
/* conclusion
1.ByPercent为显式参数
2.this为隐式参数,代表类对象
*/
组成
格式:public修饰,返回值为实例域值
<!--实现-->
// 需求:返回薪水值
public class Worker{
private int salary;
}
// 域访问器
public int getSalary(){
return salary;
}
优势
注意
如果需要返回一个可变数据域的拷贝,使用clone()
<!--实现-->
class E{
...
public Date getH(){
return (Date)hire.clone();
}
}
常用的静态常量
Math.PI
<!--实现-->
// 定义
public class Math {
public static final double PI = 3.123453454354535345;
}
// 使用
public class TestMath {
public static void main(String[] args) {
int l = 5;
double circle = l*l*Math.PI;
System.out.println(circle);
}
}
使用场景
步骤
外部类调用工厂类中的静态方法获得相应的产品对象
<!--实现-->
// 抽象产品类,方便产生多种产品类型
abstract class Product {
protected abstract void show();
}
// 具体产品类1
public class Product1 extends Product {
@Override public void show() {
System.out.println("Product1");
}
}
// 具体产品类2
public class Product2 extends Product {
@Override public void show() {
System.out.println("Product2");
}
}
// 具体产品类3
public class Product3 extends Product {
@Override public void show() {
System.out.println("Product3");
}
}
// 工厂类,根据传入参数类型返回相应的对象
public class ProductFatory {
public static Product getProduct(String s){
switch (s){
default:return null;
case "a" :return new Product1();
case "b" :return new Product2();
case "c" :return new Product3();
}
}
}
// 测试类
public class TestFactory {
public static void main(String[] args) {
ProductFatory.getProduct("a").show();
ProductFatory.getProduct("b").show();
ProductFatory.getProduct("c").show();
}
}
/* output
Product1
Product2
Product3
*/
Pros
Cons
规则:java按值调用,方法得到的是所有参数值的拷贝
无法修改基本数据类型的值。
<!--实现-->
// 修改值的方法
public class Method {
public void changeNum(int num){
num = num * 3;
}
}
// 测试类
public class TestMethodParam {
public static void main(String[] args) {
int n = 5;
Method method = new Method();
System.out.println(n);
method.changeNum(n);
System.out.println(n);
}
}
/* output
5
5
*/
/* conclusion
因为num被初始化为n值的拷贝,因此修改num不会影响n的值
*/
支持修改对象参数的状态
原因:形参是对 对象引用的拷贝,因此指向的是对象,当发生修改时,会修改对象中的值
不支持让对象参数引用一个新的对象
原因:形参是对象引用的拷贝,修改引用无法对原引用造成影响
原理图:
格式:方法名以及参数类型
<!--实现-->
indexOf(int)
格式:在类中的构造器中使用this关键字调用另一个构造器
<!--实现-->
public class TestCons {
private int age;
private String name;
private TestCons(int aAge) {
this.age = aAge;
}
private TestCons(int aAge , String aName) {
this(5);
this.name = aName;
}
public static void main(String[] args) {
TestCons testCons = new TestCons(4,"Toyz");
System.out.println(testCons.age);
System.out.println(testCons.name);
}
}
方法
在构造器中设置值
<!--实现-->
private TestCons(int aAge) {
this.age = aAge;
}
在声明中赋值
<!--实现-->
private int age = 5;
在初始化块中赋值(不常见,通常可以在构造器中实现)
<!--实现-->
{
int age = 5;
}
执行顺序