类和对象
1、类:
1、[修饰符]class 类名{
//修饰符为public、final、abstract中的一种或省略,
} //类名每个首字母大写,
对于一个类而言,可以包含三个常见的成员:构造器、Field和方法,三种成员都可以定义一个或多个,各成员之间可以互相调用,但static修饰的成员只能访问static修饰的成员,构造器用于构造该类的实例,通过new关键字来调用构造器,
2、[修饰符]Field类型 Field名[=默认值];
如:public int age; //也叫成员变量
3、[修饰符] 方法返回值类型 方法名(形参列表){
//修饰符可以省略,也可是public、proetcted、private、static、final、 //abstract;其中abstract和final最多只能出现其中之一
} //无返回值用void声明
4、 [修饰符] 构造器名 (形参列表){
//构造器名必须与类型相同
} //修饰符是public、protect、private的一种
2、实例化对象
Person p=new Person();
Person p; p=new Person();
p.name="张三"; //通过对象调用成员变量直接赋值;
3、对象的this引用及方法的调用
public class Leaf{
private int i=0;
public Leaf increment(){
i++;
return this;
}
public void print(){
System.out.println("i="+i);
}
public static void main(String[] args){
Leaf x=new Leaf();
x.increment().increment().increment().print();
Leaf y=new Leaf();
y.increment().increment().print();
}
}
方法的详解
1、方法的所属性
*方法不能独立定义,方法只能在类体里定义;
*逻辑上看,方法要么属于该类本身,要么属于类的一个对象;
*执行方法必须使用类或对象作为调用者;
2、方法的传递
<span style="font-size: 24px;">public class TransferTest{
public static void swap(int a,int b){
int temp=a;
a=b;
b=temp;
System.out.println("swap方法里,a的值是: "
+a+"; b的值是:"+b);
}
public static void main(String[]args){
int a=6;
int b=9;
swap(a,b);
swap(10,4);
}
}</span>
3、递归方法
public class Dome{
public static int fn(int n){
if(n==0||n==1){
return 1;
}
else{
return fn(n-1)+fn(n-2);
}
}
public static void main(String[]args){
System.out.println(fn(10));
}
}
4、方法的重载
public class Overload{
public void test(String msg){
System.out.println("只有一个字符串方法的调用");
}
public void test<span style="color: rgb(204, 0, 0);">(String...books)</span>{ <span style="color: rgb(153, 0, 0);">//长度无限个</span>
System.out.println("形参长度可变的方法");
}
public static void main(String[]args){
Overload ol=new Overload();
ol.test(); <span style="color: rgb(255, 0, 0);"> //第二个方法</span>
ol.test("年后","年会"); <span style="color: rgb(204, 0, 0);">//第二个方法</span>
ol.test("你好"); <span style="color: rgb(204, 0, 0);">//第一个方法</span>
}
}
成员变量和局部变量
1、成员变量和局部变量
成员变量:是在类中定义的变量;
局部变量:是在方法中、代码块及形参定义的变量;
成员变量存在于堆内存中,它因对象而存在;
而局部变量存在于栈内存中;
成员变量有默认初始化值,而局部变量没有默认初始化值,不能直接参与运算;
匿名对象的应用:
匿名对象是对象的一种简化形式;
匿名对象的使用方式之一:当对对象的方法只调用一次时,可以使用匿名来完成,简化操作,但当对对象的成员进行多次调用时,就必须对对象进行命名,匿名对象调用成员变量是没有意义的;
匿名对象的使用方式之二:可以充当实际参数进行传递;
封装:
是指隐藏对象的属性和实现细节,仅对外提供访问方式;
优点:隔离变化;便于使用;提高重用性;提高安全性;
封装原则:把不需要对外提供的内容都隐藏起来;把属性都隐藏,对外提供公共方法访问;
Private:私有,权限修饰符,用于修饰类中的成员,只在类中有效;
注意:私有只是封装的一种表现形式;
之所以对外提供访问方法,就是因为可以在访问方法中加入逻辑判断等语句对需要访问的数据进行操作控制,提高了代码的健壮性;