继承关系的理解

    ji1是父类,ji2是子类

    输出内容如下:

  

   public class Ji1 {
	public String name;
	public int age;
	public Ji1 () {
		
	}
	public Ji1( String name) {
		this.name = name;
		
		
	}
	public Ji1( int age) {
		this.age = age;
		
		
	}
	public void ming() {
		System.out.println("789");
	}
	
	public void add ( int a, int b) {  //重载(overload),方法名相同,只有参数类型和个数不同,返回值也要相同
		System.out.println(a+b);
	}
	public void add( double a,double b) {
		
	}
	public String toString() {
		String s = "name:"+name+",age:"+age;	// 重写,返回一个“以文本方式表示”此对象的字符串。
		return s;
		
	}
}




                public class Ji2 extends Ji1 {   //继承的关键词
	public void ming() {
		System.out.println("跑");//重写  有一个绿色的三角形
	}
	
	public Ji2()	{
		super("小花"); 
		//连接ji1里面构造的name方法
	}
	
	
	public void ming2() {
		super.ming();  //super指向父类的引用
	} 

}


            public class Ce {

	public static void main(String[] args) {
		Ji2 ji2 = new Ji2();
		ji2.ming2(); //super.ming指向ji1里面的成员方法ming
		ji2.ming();  //子类覆盖了父类,重写(overwrite),
		System.out.println(ji2.name); //ji1里面构造的name方法,super连接这个方法,名字输入的是 "小花"
		
		System.out.println(ji2.age);
		
		ji2.add(5,6); //重载
		System.out.println(ji2);

	}

}

       习题    

    定义一个二维空间的点的类, 使用构造方法提供可以设置这个点的x, y坐标,
        并计算这个点到原点的距离, 原点定义为0, 0
        
        定义一个平面圆的类, 圆有一个引用类型的属性,
        Point类, 作为圆心,
        有一个半径属性, 提供计算此圆面积的方法,
        另外再提供一个方法,
        以Point类型作为参数, 并计算出此点是否在圆的范围内

      

        //点到原点的距离
public class Point {
	private double x;
	private double y;
	
	public Point() {}
	
	public Point(double x, double y) {
		this.x = x;
		this.y = y;
	}
	
	public double calInstance() {
		double temp = x * x + y * y;
		double ins = Math.sqrt(temp);
		System.out.println("这个点到原点的距离是: " + ins);
		return ins;     //
	}

	public double getX() {
		return x;
	}

	public void setX(double x) {
		this.x = x;
	}

	public double getY() {
		return y;
	}

	public void setY(double y) {
		this.y = y;
	}
}

     
        public class Circle {
	private Point point;   //Point类作为圆心
	private double radius;  //半径

	public Circle() {
	}

	public Circle(Point point, double radius) {  //构造方法
		super();
		this.point = point;
		this.radius = radius;
	}

	public Point getPoint() {
		return point;      //get Point,以便在main方法里面调用
	}
	
	public void getArea() {
		double area = Math.PI * radius * radius;
		System.out.println("这个圆的面积是:" + area);
	}
	//没有实例化,直接用Point类里的x,y
	public boolean isContains(Point p) {  //点的范围  ,Point类型作为参数,给了一个布尔值的判断方法
		double _x = p.getX() - this.point.getX();   //获取的x坐标  -  圆心的x值  
		double _y = p.getY() - this.point.getY();   //获取的y坐标  - 圆心的y值
		boolean flag = false;
		// double d = Math.sqrt(_x * _x + _y * _y);  没有返回值的构造方法
		double d = new Point(_x, _y).calInstance();   //有返回值,直接调用求坐标的方法
		if(d <= radius) {
			flag = true;
		}
		return flag;
	}

	public void setPoint(Point point) {
		this.point = point;
	}

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}

}


             public class Main {

	public static void main(String[] args) {

               	Point p1 = new Point(3, 5);
		p1.calInstance();  //点到原点的距离
		Point p2 = new Point(4, 8);
		Circle c1 = new Circle(p2, 10);//10是半径; p2是圆心
		 c1.getArea();  //圆的面积
		boolean b = c1.isContains(p1);  //判断的那个点是否在圆上
		
		if (b) {   //判断返回的值正确不正确
			System.out.println("在圆内");
		} else {
			System.out.println("不在圆内");
		}
	}

}
    
    

    

 

posted on 2017-11-22 16:06  左剃头  阅读(218)  评论(0编辑  收藏  举报

导航