Java學習-面向物件實現點和圓的關係判斷
阿新 • • 發佈:2019-02-11
前言
面向物件是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、靜態變數。
執行結果
小結
面向物件裡面的基礎知識,需要抓牢,夯實基礎,才能讓自己建立起來的程式碼框架更加穩固。
感謝您的訪問!