依赖
聚合
注意
规则
显式参数:传入方法的参数
<!--实现-->
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; }
执行顺序