Java学习-面向对象实现点和圆的关系判断

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m18633778874/article/details/79965531

前言

  面向对象是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、静态变量。

运行结果


  


小结

   面向对象里面的基础知识,需要抓牢,夯实基础,才能让自己建立起来的代码框架更加稳固。


感谢您的访问! 


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页