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("不在圆内"); } } }