目录
成员变量作用域:
- 在类的任何地方都有效
- 非静态变量,只有在创建对象时,才会分配空间并赋值
- 对象调用并执行某方法之后,成员变量的值发生变化
面向过程和面向对象的区别:
面向过程:
分析出解决问题的步骤,用函数把这些步骤一步一步实现,使用时依次调用。
面向对象:
把问题分解成对象,建立对象的目的是为了描述某个事物在解决问题的步骤中的行为。
数据域封装
将数据域设为私有 可以保护数据,使类易于维护
封装的原因:
1.数据可能被篡改
2.使类难以维护,同时容易出现错误
- 私有数据域不能被类外(定义该私有域的)访问。
- 为了访问私有数据域,可提供一个获取方法(getter)返回数据域的值。又叫访问器
- 为了更新私有数据域,可提供一个修改方法(setter)‘给数据域设置新值。又叫修改器
public class Circle{
private double radius = 1;
private static int numberOfObjects = 0;//圆的个数
public Circle(){//无参构造器
numberOfObjects++;
}
public Circle(double newRadius){//有参构造器
radius = newRadius;
numberOfObojects++;
}
public double getRadius(){//获取半径的方法
return radius;
}
public void setRadius(double newRadius){//修改半径的方法
radius = newRadius;
}
public static int getNumberOfObjects(){//获取圆个数的静态方法
return numberOfObjects;
}
public double getArea(){//获取圆面积的方法
return radius*radius*Math.PI;
}
}
public class TestCircle{//客户类
public static void main(String[] args){
Circle myCircle = new Circle(5.0);
System.out.println("The area of the circle of radius"+myCircle.getRadius()+"is"+myCircle.getArea());
myCirlce.setRadius(myCircle.getRadius()*1.1);
System.out.println("The area of the circle of radius"+myCircle.getRadius()+"is"+myCircle.getArea());
System.out.println("The number of objects created is"+Circle.getNumberOfObjects());
}
}
小结:
数据域radius被私有化的,不能修改。私有数据只能在定义他们的类中进行访问,不能在客户类中访问。
向方法传递对象参数
给方法传递一个对象,是将对象的引用 传递给方法。
将myCircle对象作为参数传递给printCircle方法
public class Test{ public static void main(String[] args){ Circle myCircle = new Circle(5.0); printCircle(myCircle); } public static void printCircle(Circle c){ System.out.println("The area of the circle of radius"+c.getRadius()+"is"+c.getArea()); } }
Java参数传递方式:值传递
传递基本数据类型的参数时,传递的是实参的值。
传递引用类型的参数时,传递的是对象的引用。
引用上的按值传参描述为按共享传参,在方法中引用的对象和传递的对象是一样的。
this:
this()不能使用在普通方法中,只能在构造,必须是构造的第一条语句
this.方法名称 用来访问本类的成员方法
this(); 访问本类的构造方法
()中如果有参数,就是调用指定的有参构造
举个例子:
this.属性=形参
p1=this
p1.age=this.age
JavaBean
javaBean是一种java语言写的可重用组件
码字不易 留个关注再走吧~