首页 > 其他分享 >周二 多态

周二 多态

时间:2023-07-11 16:14:42浏览次数:28  
标签:makeSound average 多态 class public 周二 void

多态引用可以随时引用不同类型的对象

使用继承实现多态

import java.lang.*;
class average {
public double sum=0;
public void natures(){
System.out.println("average");
}
public double averages(double ... list){
if(list.length!=0){
for(double i:list)
sum+=i;
}
return sum/list.length;
}
}
class nature extends average{
private double aa;
public void natures(){
System.out.println("nature");
}
}
public class Main {
public static void main(String[] args) {
average h=new nature();
h.natures();
average m=new average();
m.natures();
}
} 运行结果

"D:\java jdk\bin\java.exe" "-javaagent:D:\IntelliJ IDEA 2023.1\lib\idea_rt.jar=57969:D:\IntelliJ IDEA 2023.1\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath C:\Users\Lenovo\IdeaProjects\wzy\out\production\wzy Main
nature
average

进程已结束,退出代码0

一开始我的编译出错因为

而在多态的情况下,可以调用子类中覆盖了父类的方法,并且不能直接调用子类特有的方法。因此,在你的代码中,h引用的是average类型,因此无法直接调用natures()方法,因为该方法是子类nature特有的。

利用接口实现多态

继承也可应用于接口

两个关键字   Interface implements

效果与继承实现多态相仿 如

interface Animal {
void makeSound();
}

// 实现接口的两个类
class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("汪汪汪!");
}
}

class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("喵喵喵!");
}
}

public class Main {
public static void main(String[] args) {
// 创建接口类型的引用并赋值为具体实现类的实例
Animal animal1 = new Dog();
Animal animal2 = new Cat();

// 调用相同的接口方法,表现出不同的行为
animal1.makeSound(); // 输出:汪汪汪!
animal2.makeSound(); // 输出:喵喵喵!
}
}

 

标签:makeSound,average,多态,class,public,周二,void
From: https://www.cnblogs.com/zeyangshuaige/p/17544996.html

相关文章

  • 封装、抽象、继承、多态
    封装1、封装的定义封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。在java中,private、public等关键字就是访问权限控制语法。private关键字修饰的属性只能类本身访问,可以保护其不被类之外的代码直接访问。......
  • 如何用C语言实现多态?
    多态(Polymorphism)是指面向对象程序运行时,相同的消息可能会送给多个不同的类之对象,系统依据对象所属类,引发对应类的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。在C语言中,可以通过结构体和指针来实现多态。以下是通过结构体和指针实现多态......
  • C++ 多态
     多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。下面的实例中,基类Shape被派生为两个类https://www.121mu.com/czss/......
  • 周二 类
    问题描述中的名词可能是程序所需的类和对象类不能太笼统,也不能太具体公共类名必须与文件名一致java允许多个类储存在一个文件中,但是如果一个文件包含多个类,那么只有一个类可以用public声明对于非公共类,可以省略public关键字,直接声明类即可。在一个Java源文件中,可以定义多个非......
  • 多态
    C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。虚函数对于多态具有决定性的作用,有虚函数才能构成多态。多态的......
  • 多态
    多态多态即同一方法可以根据发送对象的不同而采用多种不同的行为方式。一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多多态存在的条件有继承关系子类重写父类方法父类引用指向子类对象注意:多态是方法的多态,属性没有多态性。instanceof(类型转换)引用类......
  • 多态与内部类
    信息管理系统分析--多态的引入存在问题在现有的条件下:当我们需要改变使用的Dao类,则必须将Service类中的Dao类进行改变(创建另一个Dao类的对象),而改变之后我们的Servie类中使用的Dao对象都需要改变。这样就使得类和类之间的关联性太差了是否有一种方式可以使得我们改变了Dao......
  • 单继承、多继承下的属性查找、super关键字、多态与多态性、组合
    单继承下的属性查找单继承:一个类只能继承一个类。classC():passclassB(C):passclassA(B):#单继承pass单继承下的属性查找顺序:先从对象本身的名称空间中查找------>产生这个对象的类中去查找 ------>继承的父类中去查找#查找属性classFoo():......
  • c++中虚析构函数如何实现多态的、内存布局如何?
    作者:冯Jungle链接:https://www.zhihu.com/question/36193367/answer/2242824055来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。之前Jungle写过一篇文章《探究C++:虚函数表究竟怎么回事?》,主要通过测试代码来验证虚函数表的存在,进而说明C++的多态机制......
  • Ts中的多态
    //父类定义一个方法不去实现,让继承它的子类去实现,每一个子类有不同的表现多态属于继承classAnimal{   name:string   constructor(name:string){       this.name=name   }   eat(){       console.log('吃的方法')   }}class......