簡體   English   中英

什么是超類型方法?

[英]What is a supertype method?

我已經google了幾次但仍然無法理解超類型方法。 任何人都可以解釋一下這是什么?

在OOPS中有一個超類型和子類型的概念,在java中,這種關系是通過繼承實現的,即使用extends關鍵字:

class A {} // super class
class B extends A {} //sub class

在超類中聲明的任何成員(字段,方法)都將被稱為超類型。

因此,在上述情況下,如果A類有類似的方法

class A {
   void set()
}

Set是B類的超類型方法。

但是,請注意,如果有另一個班級說C

class C {
    void set()        
}

然后set()方法不是 C類的超類型 ,因為類A和類C之間沒有關系(關系是由extends關鍵字創建的,用於繼承)。

Super at Constructer級別

    class SuperClass
{
    int num=10;
    public void display()
    {
        System.out.println("Superclass display method");
    }
}
class SubClass extends SuperClass
{
    int num=20;

    public void display()
    {
        System.out.println("the value of subclass variable name:"+num);
        System.out.println("Subclass display method");
    }
        public void Mymethod()
        {
            super.display();
            System.out.println("the value of superclass variable name:"+super.num);
        }
        public static void main(String[] args)
        {
            SubClass obj=new SubClass();
            obj.Mymethod();
            obj.display();
        }
}

在java中,每個東西都是對象,方法也是java.lang.reflect.Method類的對象。因此,超類型的方法可以被認為是java.lang.reflect.Method的超類,即AccessibleObject

如果你在談論調用超級方法,你應該嘗試以下方法

  1. 使用方法public方法創建一個類,例如printSomething()

    public void printSomething(){System.out.println(“hello,我是第一個類”); }

  2. 創建第二個類,它繼承自第一個類並覆蓋printSomething方法

    @override public void printSomething(){super.printSomething(); }

  3. 編寫一個小程序,調用第二類的printSomething方法,看看會發生什么

超類型和子類型是繼承的屬性,即為了代碼的可重用性。 我給你的超級和子類的例子。 有關更多信息,請點擊此處

使用系統;

namespace MultilevelInheritance
{
    public class Customer
    {
        public float fDis { get; set; }
        public Customer()
        {
            Console.WriteLine("I am a normal customer.");
        }
        public virtual void discount()
        {
            fDis = 0.3F;
            Console.WriteLine("Discount is :{0}", fDis);
        }

    }
    public class SilverCustomer : Customer
    {
        public SilverCustomer()
            : base()
        {
            Console.WriteLine("I am silver customer.");
        }
        public override void discount()
        {
            fDis = 0.4F;
            Console.WriteLine("Discount is :{0}", fDis);
        }
    }
    class GoldenCustomer : SilverCustomer
    {
        public GoldenCustomer()
        {
            Console.WriteLine("I am Golden customer.");
        }
        public override void discount()
        {
            fDis = 0.6F;
            Console.WriteLine("Discount is :{0}", fDis);
        }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MultilevelInheritance
{
    class Program
    {
        static void Main(string[] args)
        {
            Customer objCus = new Customer();
            objCus.discount();

            SilverCustomer objSil = new SilverCustomer();
            objSil.discount();

            GoldenCustomer objGold = new GoldenCustomer();
            objGold.discount();


            Console.ReadLine();
        }
    }
}

在此輸入圖像描述

Super用於調用在3級變量構造函數和方法級別使用的父類屬性

1.超級變量

class Super
{
    int age;
    Super(int age)
    {
        this.age=age;
    }
        public void getAge()
        {
            System.out.println(age);
        }
}
class Sub extends Super
{
    Sub(int age)
    {
        super(age);
    }
    public static void main(String[] args)
    {
         Super obj=new  Super(24);
         obj.getAge();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM