急急急急急!!!一个java程序题!
5.编写程序,功能:说明this、super和super()的用法。程序首先定义Point(点)类,然后创建点的子类Line(线)。最后通过一个类输出线段的长度。程序中通...
5.编写程序,功能:说明this、super 和super()的用法。程序首先定义Point(点)类,然后创建点的子类Line(线)。最后通过一个类输出线段的长度。程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。在子类Line 的setLine方法中,因为参数名和成员变量名相同,为给成员变量赋值,使用this 引用,告诉编译器是为当前类的成员变量赋值。在length 和toString 方法中使用父类成员变量时,使用super 引用,告诉编译器使用的是父类的成员变量。
各位程序高手帮帮忙!!!!!!
不是啊,主要是我现在急需源代码,能帮忙给源代码吗?要完整的。 展开
各位程序高手帮帮忙!!!!!!
不是啊,主要是我现在急需源代码,能帮忙给源代码吗?要完整的。 展开
2个回答
展开全部
/*5.编写程序,功能:说明this、super 和super()的用法。
* 程序首先定义Point(点)类,然后创建点的子类Line(线)。
* 最后通过一个类输出线段的长度。
* 程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。
* 在子类Line 的setLine方法中,
* 因为参数名和成员变量名相同,
* 为给成员变量赋值,使用this 引用,
* 告诉编译器是为当前类的成员变量赋值。
* 在length 和toString 方法中使用父类成员变量时,使用super 引用,
* 告诉编译器使用的是父类的成员变量。
*/
package com.snow.test;
/**
* 测试类
* @author aokaxiuluo@sina.com
*
*/
public class MySuperTest {
/**
* @param args
*/
public static void main(String[] args) {
Line test = new Line(1,0);
test.setLastPointX(4);
test.setLastPointY(-4);
System.out.println("先初始化父类的变量,再初始化子类的变量……");
System.out.println(test);
System.out.println("利用super更改每个变量的值……");
test.setLine(0, 0, 6, 8);
System.out.println(test);
}
}
//类点
class Point{
//为了本例子所以只能设置成public 平时用private
public int positionX;//点的横坐标
public int positionY;//点的纵坐标
public Point(){
this.positionX = 0;
this.positionY = 0;
}
/*
* 这里调用构造方法的时候posiontX,positionY和类中的私有变量是一样的名字
* 要用this来说明你使用的是私有变量还是局部变量
* */
public Point(int positionX,int positionY){
this.positionX = positionX;
this.positionY = positionY;
}
public int getPositionX() {
return positionX;
}
public int getPositionY() {
return positionY;
}
/* 去掉set方法,使得其它的类不能通过方法更改Point类的横、纵坐标
* public void setPositionX(int positionX) {
* this.positionX = positionX;
* }
* public void setPositionY(int positionY) {
this.positionY = positionY;
* }
**/
}
/*
* 类线
* 其实我觉得Line不应该继承Point,它应该是和Point并列的,不过题目这样要求,我只能这样勉强去解释……
* */
class Line extends Point{
private int lastPointX;//这个线段的端点中的另一个的横坐标
private int lastPointY;//这是线段的端点中的另一个的纵坐标
public Line(){
super.positionX = 0;
super.positionY = 0;
this.lastPointX = 0;
this.lastPointY = 0;
}
public Line(int firstPointX,int firstPointY){
super(firstPointX,firstPointY);//==========================================这里说明的是super()的用法,注意super()只能用在构造方法中,且只能放在第一句
lastPointX = 0;
lastPointY = 0;
}
public int getLastPointX() {
return lastPointX;
}
public int getLastPointY() {
return lastPointY;
}
//==============================================================================这两个set方法都说明了this的用法
public void setLastPointX(int lastPointX) {
this.lastPointX = lastPointX;
}
public void setLastPointY(int lastPointY) {
this.lastPointY = lastPointY;
}
//=====================================================自定义方法================================================================
/**
* 这个方法用于计算Line的长度
*/
public double length(){
int x1 = super.getPositionX();//正常引用父类变量的方法,这时父类变量是私有的
int y1 = super.getPositionY();//正常引用父类变量的方法,这时父类变量是私有的
int x2 = this.getLastPointX();
int y2 = this.getLastPointY();
return Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
}
/**
* 这个方法的实现也说明了super和this的用法
*/
public void setLine(int firstPointX,int firstPointY,int lastPointX,int lastPointY){
super.positionX = firstPointX;
super.positionY = firstPointY;
this.lastPointX = lastPointX;
this.lastPointY = lastPointY;
}
/**
* 覆盖了Object的toString方法
*/
public String toString(){
return "Line 第一个点的横坐标是:" + super.positionX + "\t" //====================这里用的就是父变量中的positionX,说明了super的用法
+"Line 第一个点的横坐标是:" + super.positionY + "\t" + "\n"
+"Line 第二个点的横坐标是:" + this.getLastPointX() + "\t"
+"Line 第二个点的横坐标是:" + this.getLastPointY() + "\t" + "\n"
+"Line 长度是:" + this.length();
}
}
输出结果
先初始化父类的变量,再初始化子类的变量……
Line 第一个点的横坐标是:1 Line 第一个点的横坐标是:0
Line 第二个点的横坐标是:4 Line 第二个点的横坐标是:-4
Line 长度是:5.0
利用super更改每个变量的值……
Line 第一个点的横坐标是:0 Line 第一个点的横坐标是:0
Line 第二个点的横坐标是:6 Line 第二个点的横坐标是:8
Line 长度是:10.0
* 程序首先定义Point(点)类,然后创建点的子类Line(线)。
* 最后通过一个类输出线段的长度。
* 程序中通过super(a,b)调用父类Point 的构造方法为父类的x 和y 赋值。
* 在子类Line 的setLine方法中,
* 因为参数名和成员变量名相同,
* 为给成员变量赋值,使用this 引用,
* 告诉编译器是为当前类的成员变量赋值。
* 在length 和toString 方法中使用父类成员变量时,使用super 引用,
* 告诉编译器使用的是父类的成员变量。
*/
package com.snow.test;
/**
* 测试类
* @author aokaxiuluo@sina.com
*
*/
public class MySuperTest {
/**
* @param args
*/
public static void main(String[] args) {
Line test = new Line(1,0);
test.setLastPointX(4);
test.setLastPointY(-4);
System.out.println("先初始化父类的变量,再初始化子类的变量……");
System.out.println(test);
System.out.println("利用super更改每个变量的值……");
test.setLine(0, 0, 6, 8);
System.out.println(test);
}
}
//类点
class Point{
//为了本例子所以只能设置成public 平时用private
public int positionX;//点的横坐标
public int positionY;//点的纵坐标
public Point(){
this.positionX = 0;
this.positionY = 0;
}
/*
* 这里调用构造方法的时候posiontX,positionY和类中的私有变量是一样的名字
* 要用this来说明你使用的是私有变量还是局部变量
* */
public Point(int positionX,int positionY){
this.positionX = positionX;
this.positionY = positionY;
}
public int getPositionX() {
return positionX;
}
public int getPositionY() {
return positionY;
}
/* 去掉set方法,使得其它的类不能通过方法更改Point类的横、纵坐标
* public void setPositionX(int positionX) {
* this.positionX = positionX;
* }
* public void setPositionY(int positionY) {
this.positionY = positionY;
* }
**/
}
/*
* 类线
* 其实我觉得Line不应该继承Point,它应该是和Point并列的,不过题目这样要求,我只能这样勉强去解释……
* */
class Line extends Point{
private int lastPointX;//这个线段的端点中的另一个的横坐标
private int lastPointY;//这是线段的端点中的另一个的纵坐标
public Line(){
super.positionX = 0;
super.positionY = 0;
this.lastPointX = 0;
this.lastPointY = 0;
}
public Line(int firstPointX,int firstPointY){
super(firstPointX,firstPointY);//==========================================这里说明的是super()的用法,注意super()只能用在构造方法中,且只能放在第一句
lastPointX = 0;
lastPointY = 0;
}
public int getLastPointX() {
return lastPointX;
}
public int getLastPointY() {
return lastPointY;
}
//==============================================================================这两个set方法都说明了this的用法
public void setLastPointX(int lastPointX) {
this.lastPointX = lastPointX;
}
public void setLastPointY(int lastPointY) {
this.lastPointY = lastPointY;
}
//=====================================================自定义方法================================================================
/**
* 这个方法用于计算Line的长度
*/
public double length(){
int x1 = super.getPositionX();//正常引用父类变量的方法,这时父类变量是私有的
int y1 = super.getPositionY();//正常引用父类变量的方法,这时父类变量是私有的
int x2 = this.getLastPointX();
int y2 = this.getLastPointY();
return Math.sqrt((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
}
/**
* 这个方法的实现也说明了super和this的用法
*/
public void setLine(int firstPointX,int firstPointY,int lastPointX,int lastPointY){
super.positionX = firstPointX;
super.positionY = firstPointY;
this.lastPointX = lastPointX;
this.lastPointY = lastPointY;
}
/**
* 覆盖了Object的toString方法
*/
public String toString(){
return "Line 第一个点的横坐标是:" + super.positionX + "\t" //====================这里用的就是父变量中的positionX,说明了super的用法
+"Line 第一个点的横坐标是:" + super.positionY + "\t" + "\n"
+"Line 第二个点的横坐标是:" + this.getLastPointX() + "\t"
+"Line 第二个点的横坐标是:" + this.getLastPointY() + "\t" + "\n"
+"Line 长度是:" + this.length();
}
}
输出结果
先初始化父类的变量,再初始化子类的变量……
Line 第一个点的横坐标是:1 Line 第一个点的横坐标是:0
Line 第二个点的横坐标是:4 Line 第二个点的横坐标是:-4
Line 长度是:5.0
利用super更改每个变量的值……
Line 第一个点的横坐标是:0 Line 第一个点的横坐标是:0
Line 第二个点的横坐标是:6 Line 第二个点的横坐标是:8
Line 长度是:10.0
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询