类的封装与继承实例1
代码很简单,很容易实现。
1,局部变量和成员变量重命名问题
使用this关键字解决
2,有参数和无参数构造函数的理解
每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,java在类里提供了一个特殊的成员函数,叫做构造函数(constructor)。
一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。
构造方法是一种特殊的方法,具有以下特点。 (1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。 (4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
3,简单的circle实例求圆的面积和周长
```java
package java_demo;
/*1,定义一个CIrcle类
*2,抽象出类成员变量radius(半径),num(对象的个数),PI(圆周率常量)
*3,无参数和有参的的构造方法
*4,成员方法getRadius()返回半径 setRadius()设置半径
* calcArea()计算面积 calcGirth()计算周长
*5,主函数main()
* 构造对象()含参数
* 输出 半径 面积 周长 对象数目
*
*
*
* */
public class Circle {
private double radius;//成员变量
private static int num;//对象数目 STATic静、态
public static final double PI=3;
public Circle(){
num++;//无参数的构造方法
}
public Circle(double radius){//有参数的构造方法
/*有参数构造方法使用的参数变量和类成员变量是否能一样
* 首先使用一样的radius,运行输出默认结果0.0
* 使用不同变量时候结果正常输出
*/
this.radius=radius;//重命名问题局部变量
num++;
}
public static int getNums(){
return num;
}
public double calcArea(){
return PI*radius*radius;
}
public double calcGirth(){
return 2*PI*radius;
}
public static void main(String[] args){
Circle C1=new Circle(8);
System.out.println(C1.radius);
System.out.println("圆的面积"+C1.calcArea()+"圆的周长"+C1.calcGirth()+"对象的个数"+C1.num);
Circle C2=new Circle(9);
System.out.println("圆的面积"+C2.calcArea()+"圆的周长"+C2.calcGirth()+"对象的个数"+C2.num);
}
}
4,运行结果