1. 程式人生 > >Java學習-面向物件實現點和圓的關係判斷

Java學習-面向物件實現點和圓的關係判斷

前言

  面向物件是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、靜態變數。

執行結果


小結

   面向物件裡面的基礎知識,需要抓牢,夯實基礎,才能讓自己建立起來的程式碼框架更加穩固。

感謝您的訪問!