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