马士兵J2SE-第三章-面向对象-基础及重载

面向对象:

//面向对象的方法写一段程序,要求能够手动修改年月日的信息


class Date {
	private int day;
	private int month;
	private int year;
	
	public Date (int d, int m, int y) {
		day = d; 
		month = m;
		year = y;
	}
	
	public void setDay(int d) {
		day=d;
	}
	
	public void setMonth(int m) {
		month = m;
	}
	
	public void setYear(int y) {
		year = y;
	}
	
	public int getDay() {
		return day;
	}
	
	public int getMonth() {
		return month;
	}
	
	public int getYear() {
		return year;
	}
	
	public void display() {
		System.out.println(day+"-"+month+"-"+year);
	}
}

public class test {
	public static void main(String[] args) {
		test testdemo = new test();
		Date d1=new Date(3,11,2011);
		testdemo.change(d1);
		d1.display();
		
	}
	
	public void change(Date b) {
		b.setDay(5);
		b.setMonth(6);
		b.setYear(2046);
	}
	
}


输出:

5-6-2046


我的写法,不过有问题,计算SQRT应该是DOUBLE的,所以定义的时候就有问题,但是毕竟是新手,依葫芦画瓢,能实现功能就。。。。对JAVA的使用也不灵活,死板的用吧。。。。

//定义一个"点"(Point)类来表示三维空间的点(有三个坐标)
//1.可以生成具有特定坐标的点对象
//2.提供那个可以设置三个坐标的方法
//3.提供可以计算该点距远点距离平方的方法
import java.math.*;
class Point {
	private int xl;
	private int yl;
	private int zl;
	
	public Point(int x,int y,int z) {
		xl = x;
		yl = y;
		zl = z;
	}
	
	public void setXL(int x) {
		xl = x;
	}
	
	public void setYL(int y) {
		yl = y;
	}
	
	public void setZL(int z) {
		zl = z;
	}
	
	public int getXL() {
		return xl;
	}
	
	public int getYL() {
		return yl;
	}
	
	public int getZL() {
		return zl;
	}
	
	public void showlocation() {
		System.out.println(xl+","+yl+","+zl);
	}
	
	public void calclocation() {
		double n=xl*xl+yl*yl+zl*zl;
		double m=Math.sqrt(n);
		System.out.println(m);
	}

	
}

public class test {
	public static void main(String[] args) {
		test testdemo = new test();
		Point p1=new Point(3,4,0);
	//	testdemo.change(p1);
		p1.showlocation();
		p1.calclocation();
	}
	
	public void change(Point d) {
		d.setXL(12);
		d.setYL(14);
		d.setZL(18);
	}
}

输出:

3,4,0
5.0


马士兵的写法

class Point {
	double x,y,z;
	
	Point (double _x,double _y,double _z) {
		x = _x;
		y = _y;
		z = _z;
	}
	
	void setX(double _x) {
		x = _x;
	}
	
	void setY(double _y) {
		y = _y;
	}
	
	void setZ(double _z) {
		z = _z;
	}
	
	double getDistance(Point p) {
		return (x - p.x)*(x - p.x) +(y - p.y)*(y-p.y)+(z-p.z)*(z-p.z);
	}
	
	
}

    public class test {
    	public static void main(String[] args) {
    		Point p =new Point (1.0,2.0,3.0);
    		Point p1=new Point (0.0,0.0,0.0);
    		System.out.println(p.getDistance(p1));
    		
    		p.setX(5.0);
    		System.out.println(p.getDistance(new Point(1.0,1.0,1.0)));
    	}
    }



重载

public class test {

	public static void main(String[] args) {
		test t=new test();
		t.max(3, 4);
		short a=3;
		short b=4;
		t.max(a, b);
	}
	
	void max(short a,short b) {
		System.out.println("short");
		System.out.println(a > b?a:b);
	}
	
	void max(int a, int b) {
		System.out.println("int");
		System.out.println( a > b ? a : b);
	}
 
	void maxFlaot(float a, float b) {
		System.out.println("float");
		System.out.println( a> b ? a: b);
	}
	
	void max(float a,float b) {
		System.out.println( a > b ? a: b);
	}
	

 
}


输出:

int
4
short
4


 

this

注意分析内存

public class test {
	int i = 0;
	
	test(int i) {
		this.i=i;
	}
	
	test increament() {
		i++;
		return this; 
	}
	
	void print() { 
		System.out.println("i="+i);
	};
	
	public static void main(String[] args) {
		test testdemo=new test(100);
		testdemo.increament().increament().print();
	}
}


输出:

i=102

 

 

//为circle类建立一个方法,计算一个点(Point对象)是否在圆(Circle对象)内
class Point {
	private double x;
	private double y;
	
	Point(double x1,double y1) {
		x=x1;
		y=y1;
	}
	

	public void setX(double x1) {
		x=x1;
	}
	
	public void setY(double y1) {
		y = y1;
	}
	
	public double getX() {
		return x;
	}
	
	public double getY() {
		return y;
	}
	
}


class Circle {
	private Point o;//点,圆心
	private double radius;//半径
	
	Circle(Point p,double r) {
		o = p;
		r = radius;
	}
	
	Circle(double r) {
		o = new Point(0.0,0.0);
		radius=r;
	}

	public void setO(double x,double y) {
		o.setX(x);
		o.setY(y);
	}
	
	public void setRadius(double r) {
		radius = r;
	}
	public Point getO() {
		return o;
	}
	
	public double getRadius() {
		return radius;
	}
	
	public double area() {
		return 3.14*radius*radius;
	}
	
	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 class test {
	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:("+c2.getO().getX()+","+c2.getO().getY()+"),"+c2.getRadius());
		System.out.println("c1 area="+c1.area());
		System.out.println("c2 area="+c2.area());
		c1.setO(5, 6);
		c2.setRadius(9.0);
		System.out.println("c1:("+c1.getO().getX()+","+c1.getO().getY()+"),"+c1.getRadius());
		System.out.println("c1:("+c2.getO().getX()+","+c2.getO().getY()+"),"+c2.getRadius());
		System.out.println("c1 area="+c1.area());
		System.out.println("c2 area="+c2.area());
		
		Point p1 = new Point(5.2,6.3);
		System.out.println(c1.contains(p1));
		System.out.println(c2.contains(new Point(10.0,9.0)));
	}
}


输出:

 

 c1:(1.0,2.0),0.0
c1:(0.0,0.0),5.0
c1 area=0.0
c2 area=78.5
c1:(5.0,6.0),0.0
c1:(0.0,0.0),9.0
c1 area=0.0
c2 area=254.34
false
false

自己理解做了点笔记写的程序,貌似答案有点问题。。。。加油训练吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值