抽象类、接口作为方法形参、返回值

一、类名作为形参

1、表示可以传递本类对象的引用作为实参

2、可以传递本类子类的对象的引用

3、可以传递null,但会报NullPointerException异常

一、抽象类作为形参

1、使用抽象类作为形参意味着可以接受一个他的子类的对象的引用,即将子类的对象的引用作为参数传到方法中

2、可以传递null,但会报NullPointerException异常           

 

二、接口作为形参

1、使用接口作为形参意味着可以使用这个接口的实现类的对象的引用作为实参传递给方法   

2、可以传递null,但会报NullPointerException异常

 

三、类名作为方法的返回值类型(返回一个对象的引用)

1、一个方法的返回值类型声明为一个类类型,这个方法可以返回以下类型:

1、返回此类对象的一个引用

Class Student{}

Class Demo{

static void main(String[] args){

Student s = new method();

}

Public static Student method(){

Student stu =new Student();

Return stu;

}

}

2、可以返回null。如果调用的方法的返回值是一个引用类型,在使用前最好先进行判断返回的值是不是null

3、可以返回此类子类对象的引用。如果方法的返回值类型是父类类型,可能返回的是父类对象的引用,也可能返回任何子类对象的引用,所以不确定是哪个子类,所以不能具体的子类变量接受,只能用父类接受。如果确定了方法返回的哪个子类对象的引用,则可以将方法的返回值强转为对应子类的类型,此时可以直接用此子类类型来接受方法返回的地址。此规则同样适用于抽象类和接口作为返回值类型的情况。

 

四、抽象类作为方法的返回值类型(返回一个对象的引用)

1、方法的返回值类型为“抽象类”类型意味着:

1/1 这个方法会返回这个抽象类的子类对象的引用。由于不确定是具体的某个子类类型,所以,不能用子类类型来接受返回值,只能用抽象类类型接收,同类名作为方法的返回值。

 

五、abstract不能和哪些关键字共存:

1.private:因为一个抽象方法就是被子类重写的。要重写就必须不能为private的。

2.final:因为一个抽象方法就是被子类重写的。而final表示:最终方法,不能被重写。所以这两个关键字冲突;

       作用在""上也是一样:一个抽象类就是用来被继承的。而final类:表示最终类,不能被继承。所以也是冲突;

3.static:因为一个抽象方法没有方法体。所以不能定义为static的。因为无法被分配空间;

 

六、接口作为方法的返回值类型(返回一个对象的引用)

1、接口作为方法的返回值意味着:

1/1 这个会返回此接口的子类的对象的引用。由于不确定具体是哪个子类,所以,不能用子类类型来接收返回值,只能用接口类型

2、可以返回null

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: yway()方法实现输出矩形的长和宽。 定义接口printx,其中包括一个抽象方法printmyway(),这个方法没有形参返回值为空。这个接口可以被其他类实现,实现类需要实现printmyway()方法。 矩形类rectangle需要实现printx接口,即实现printmyway()方法。此外,矩形类还需要有求面积、求周长的方法,可以根据矩形的长和宽计算得出。printmyway()方法实现输出矩形的长和宽,可以用System.out.println()方法实现。 示例代码如下: // 定义接口printx interface printx { void printmyway(); } // 矩形类rectangle实现printx接口 class rectangle implements printx { private double length; private double width; // 构造方法 public rectangle(double length, double width) { this.length = length; this.width = width; } // 求面积 public double getArea() { return length * width; } // 求周长 public double getPerimeter() { return 2 * (length + width); } // 实现printmyway()方法 public void printmyway() { System.out.println("矩形的长为:" + length + ",宽为:" + width); } } 在上面的代码中,接口printx定义了一个抽象方法printmyway(),矩形类rectangle实现了这个接口,并实现了printmyway()方法。此外,矩形类还有求面积、求周长的方法,可以根据矩形的长和宽计算得出。在printmyway()方法中,使用System.out.println()方法输出矩形的长和宽。 ### 回答2: 题目要求我们定义一个接口printx,这个接口里包含一个抽象方法printmyway(),这个方法没有形参返回值为空。接口是一种抽象规范,它规定了需要实现这个接口的类必须要实现printmyway()方法。我们可以使用Java语言来定义这个接口: public interface printx { void printmyway(); } 在上面的代码中,我们定义了一个printx接口,其中包含printmyway()方法。接下来,我们需要编写一个矩形类rectangle,这个类要求实现printx接口,并且还需要具备求面积、求周长的方法,以及printm输出矩形信息的方法。 public class rectangle implements printx { private double width; private double length; public rectangle(double width, double length) { this.width = width; this.length = length; } public double getArea() { return width * length; } public double getPerimeter() { return 2 * (width + length); } public void printm() { System.out.println("矩形的宽为:" + width); System.out.println("矩形的长为:" + length); System.out.println("矩形的面积为:" + getArea()); System.out.println("矩形的周长为:" + getPerimeter()); } @Override public void printmyway() { System.out.println("我是矩形,这是我的信息:"); printm(); } } 在上面的代码中,我们定义了一个rectangle类并实现了printx接口。我们在rectangle类中定义了两个私有变量width和length,用来记录矩形的宽和长。在rectangle类中定义了一个构造函数,用来初始化矩形的宽和长。接着,我们定义了getArea()和getPerimeter()方法,用来求矩形的面积和周长。最后,我们定义了printm()方法,这个方法用来输出矩形的信息。接着,我们实现了printx接口中的抽象方法printmyway(),在这个方法中输出矩形的信息。这样,我们就完成了题目的要求。 ### 回答3: 接口是一种规范,它定义了实现该接口的类必须具备的方法和属性。其中包括不同的方法,这些方法可以是抽象方法或者默认方法。在这道题目中,我们需要定义接口printx,并且在一个类中实现这个接口。 首先,我们需要定义接口printx,并且在其中定义一个抽象方法printmyway(),这个方法没有形参返回值为空。抽象方法是没有具体实现的方法,只是作为方法的定义,要求实现该接口的类必须要提供具体实现,抽象方法不包含任何代码块。 其次,我们需要编写矩形类rectangle,这个类应该实现printx接口,并且还需要实现求面积、求周长的方法,以及printm方法。求面积和求周长的方法是类中的具体实现方法,可以直接实现。printm方法是实现printx接口中抽象方法printmyway()的具体实现。求面积和求周长的方法需要用到矩形的长和宽,所以需要在矩形类中定义这两个属性。 最后,编写代码实现上述逻辑,首先定义接口printx,然后编写矩形类rectangle实现接口printx,并在类中实现求面积、求周长的方法和printm方法,其中求面积、求周长的方法需要用到矩形的长和宽,printm方法需要输出矩形的信息。具体代码实现如下: ```java // 定义接口printx interface printx { void printmyway(); } // 矩形类rectangle class rectangle implements printx { private double length; // 矩形长度 private double width; // 矩形宽度 // 构造函数,初始化矩形的长和宽 public rectangle(double length, double width) { this.length = length; this.width = width; } // 实现接口printx中的抽象方法printmyway public void printmyway() { System.out.println("这是一个矩形,长为" + length + ",宽为" + width); } // 计算矩形面积 public double getArea() { return length * width; } // 计算矩形周长 public double getPerimeter() { return 2 * (length + width); } // 输出矩形信息 public void printm() { System.out.println("矩形的面积为:" + getArea() + ",周长为:" + getPerimeter()); } } // 测试代码 public class Main { public static void main(String[] args) { rectangle r = new rectangle(3, 4); // 创建一个矩形对象 r.printmyway(); // 调用接口printx中的抽象方法printmyway实现矩形信息输出 r.printm(); // 输出矩形的面积和周长 } } ``` 在上面的代码中,首先我们定义接口printx,并在其中定义一个抽象方法printmyway();然后编写矩形类rectangle,该类实现printx接口,并在类中实现求面积、求周长的方法和printm方法;最后在测试代码中创建一个矩形对象,调用接口printx中的抽象方法printmyway实现矩形信息输出,并输出矩形的面积和周长。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值