前言
面向对象是Java中的基本,根源,本篇博客,小编将结合一个点和圆两个类的关系,来好好地整理一下面向对象中的那些事。
点和圆两个类
一、创建点类Point
1.成员变量:x,y
2.构造方法:Point(doublex,double y)
注意:
关于构造方法
(1)用户未定义构造方法,编译器默认使用无参的构造方法;
(2)若自定义了构造方法后,便没有默认的构造方法,编译器便不给添加了;
(3)构造方法没有返回值,不能添加void关键字。
此处用户定义了构造方法,便只使用此方法声明创建对象。
关于this关键字
- 在类的方法定义中,this关键字代表使用该方法的对象的引用;
- 使用this,可以处理方法中成员变量和参数重名的情况,此处正是这种情况。
3.其他方法:getX()、getY()、setX(double x1)、setY(double y1)
class Point{
private double x,y;
Point(double x,double y){
this.x=x;
this.y=y;
}
public double getX(){
return x;
}
public double getY(){
return y;
}
public void setX(double x1){
x=x1;
}
public void setY(double y1){
y=y1;
}
}
二、创建圆类Circle
1.成员变量:Point类型的o(点)、double类型的radius(半径)
2.构造方法:两个
3.其他方法:六个
class Circle{
private Point o;
private double radius;
Circle(Point p,double r){
o=p;
radius=r;
}
Circle(double r){
o=new Point(0.0,0.0);;
radius=r;
}
boolean contains(Point p){
double x=p.getX()-o.getX();
double y=p.getY()-o.getY();
if(x*x+y*y>radius*radius) return false;
else return true;
}
public void setO(double x,double y){
o.setX(x);
o.setY(y);
}
public Point getO(){
return o;
}
public double getRadius(){
return radius;
}
public void setRadius(double r){
radius=r;
}
public double area(){
return 3.14*radius*radius;
}
}
创建对象
一、main 方法中创建相关对象
public static void main(String[] args){
Circle c1=new Circle(new Point(1.0,2.0),2.0);
Circle c2=new Circle(5.0);
System.out.println("c1:("+c1.getO().getX()+","+c1.getO().getY()+"),"+c1.getRadius());
System.out.println("c1 area="+c1.area());
System.out.println(c1.contains(new Point(1.0,2.0)));
}
二、必须使用new关键字创建对象
创建了两个对象Circle1、、Circle2;
利用不同的构造方法实现,对象的创建。
三、调用对象的变量和方法
使用对象引用.成员变量来引用对象的成员变量,如c1.getO();
使用对象引用.方法(参数列表)来调用对象的方法,如c1.area(),c1.contains(new Point(1.0,2.0));
(这也体现了同一个类的每个对象共享该类的方法)
四、同一类的每个对象有不同的成员变量存储空间
Heap:堆里面放new创建的对象,new Circle(new Point(1.0,2.0),2.0);
Stack:栈里面放局部变量和形参 c1,c2
dataseg:代码块中放String、静态变量。
运行结果
小结
面向对象里面的基础知识,需要抓牢,夯实基础,才能让自己建立起来的代码框架更加稳固。
感谢您的访问!