[英]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
。
如果你在談論調用超級方法,你應該嘗試以下方法
使用方法public方法創建一個類,例如printSomething()
public void printSomething(){System.out.println(“hello,我是第一個類”); }
創建第二個類,它繼承自第一個類並覆蓋printSomething方法
@override public void printSomething(){super.printSomething(); }
編寫一個小程序,調用第二類的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.