zoukankan      html  css  js  c++  java
  • 抽象类实现多态

     

      

    一:什么是多态?

          多种形态,既不同的对象对于同一个操作做出的相应不同。

    二:.抽象类的几个注意事项

         1,抽象类使用abstract修饰

         2,抽象方法只能位于抽象类中

         3,抽象类不能实例化

         4,抽象方法没有方法体

          5,抽象类不能是静态类或者密封类

          6,子类必须重写父类的所有抽象方法,除非子类也是抽象类

          7,抽象类中可以有普通的方法

          8,抽象了中可以有构造函数

          9,抽象类中的抽象方法就是为了约束子类的方法形式。

     三:抽象类的“实例化”

          虽然抽象类本身不能通过new进行实例化,但他可以将引用对象指向子类的真实对象,也可以称为间接实例化。

          Person作为父类

    public abstract class Person{

    public int Age { get; set; }

    public string Name { get; set; }


    public Person(int age,string name) {

    this.Age = age;
    this.Name = name;

    }

    public abstract void Say();

    public void Eat()
    {

    Console.WriteLine("我是父类");
    }

    }
    

      Student类去继承Person

       

    public class Student:Person
    {
    
    
        public Student(string name,int age){

                     public Student(int age, string name):base(age,name) {

                     this.Age = age;
                     this.Name = name;


                     }


                      public override void Say()
                   {
                   Console.WriteLine("子类说话");
                     }


    public void Eat() {

    Console.WriteLine("我是子类");

    }

       }
    }
    

      父类对象指向子类的真实对象时,子类首先走的是父类的构造函数,在走子类的构造函数,给其属性赋值。,

    Person p = new Student(18, "张宇");
    
                p.Say();                  //只有这一种情况,父类变量指向子类对象,调用的是子类的方法,
                                          //符合多态,父类和子类方法同名调用的是子类的方法
                p.Eat();                  //如果没有方法没有发生关系,则默认调用父类的方法。
                     
                 
    
                Student stu = (Student)p;
    
                stu.Eat();                //如果要调用子类的特有的方法,需要进行类型转换,在java中称为,向下转型
                
    
                Console.ReadKey();
    

      

  • 相关阅读:
    六、springboot集成Swagger2
    五、springboot单元测试
    四、Springboot Debug调试
    三、springboot热部署
    二、springboot配置
    一、springboot入门
    SpringBoot整合RabbitMQ
    消息总线
    分布式配置
    路由网关---zuul
  • 原文地址:https://www.cnblogs.com/zhangyu0217----/p/6575825.html
Copyright © 2011-2022 走看看