抽象类、借口、构造函数、静态方法成员

一、抽象类(abstract)

1、定义:抽象类是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类,它不能生成对象;

抽象类是不完整的,它只能用作基类。在面向对象中中,抽象类主要用来进行类型隐藏和充当全局变量的角色。

2、特点:

  • 抽象类不能实例化。
  • 抽象类可以包含抽象方法和抽象访问器及非抽象类,但抽象方法一定在抽象方法中。
  • 从抽象类派生的非抽象类必须子类继承之后实例化再调用。
  • 不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。

注:抽象类是减少代码重写时被继承代码重复量,即:抽象类是用来被继承,常与override连用

二、接口(interface)

1、定义:接口是抽象类的变体。在接口中,所有方法都是抽象的,没有一个有程序体。

2、结构:数据类型  函数名();

子类实现接口中的方法,不需要override关键字

例:

static void Main(string[] args)
        {
            bird b=new bird();

            Console.WriteLine(b.eat());
            Console.WriteLine(b.flying()); Console.WriteLine(b.sing());
            Console.ReadLine();
        }
public abstract class fly {
        public abstract string flying();
        public string eat()
        {
            return "吃饱了才能飞";
        }

    }

public interface jiao
{
string sing();
}

public class bird :fly,jiao
    {
        public override string flying()
        {
            return "吃完虫子就要飞";
        }

public string sing()
{
return "叽叽喳喳的叫";
}

    }

三、构造函数

1、定义:构造函数 ,是一种特殊的方法,即:与类名相同的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

例:无参数构造函数

static void Main(string[] args)
        {
            fly b = new fly();
            Console.WriteLine(b.Name);
            Console.ReadLine();
        }
public class fly
    {
        public fly()
        {
            _name = "jksd";
        }
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }

有参数构造函数

 class Program
    {
        static void Main(string[] args)
        {
            fly b = new fly("kajlk");
            Console.WriteLine(b.Name);
            Console.ReadLine();
        }
    }
public class fly
    {
        public fly(string s)
        {
            _name = s;
        }
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }

四、静态方法和成员(static)

1、定义:若类的方法前加了static关键字,则该方法称为静态方法,反之为实例方法

2、特点:

  1. 静态方法的调用,是类名后直接加静态方法。实例方法必须将类实例化后,用实例调用该实例方法。
  2. 静态方法,只能调用类中的其他静态属性和静态方法,不能调用类中的非静态属性和非静态方法。
  3. 实例方法, 可以调用静态属性和静态方法,也可以调用实例属性和实例方法。
  4. 静态方法是属于类的必须由类来调用,实例方法是属于实例的必须实例化类后,用类的实例调用。

例:

class Program
    {
        static void Main(string[] args)
        {
            fly.flying("kldsl;a");
            Console.WriteLine(fly._name);
            Console.ReadLine();
        }
    }
public  class fly
    {

        public  static string _name;
        public static void flying(string s)
        {
            _name = s;
        }
    }
时间: 2024-08-30 01:25:28

抽象类、借口、构造函数、静态方法成员的相关文章

【C/C++】构造函数、默认构造函数、成员初始化列表

常见问题 Q1. 下列关于构造函数的描述中,错误的是( ) A. 构造函数可以设置默认的参数 B. 构造函数在定义类对象时自动执行 C. 构造函数可以是内联函数 D. 构造函数不可以重载 Q2. 下列代码中a.b的各个成员变量值是多少? 1 class Student 2 { 3 public: 4 Student() {} 5 void show(); 6 private: 7 string name; 8 int number; 9 int score; 10 }; 11 Student a

【C++】编写一个简单的类。包含构造函数,成员函数等。

<pre name="code" class="cpp">//编写一个简单的类.包含构造函数,成员函数等. #include <iostream> using namespace std; class Rec { public: Rec(int l,int w); int Area(); void Print(); private: int length,wide; }; Rec::Rec(int l,int w) { length=l; w

C#中抽象类里面建立静态方法

</pre><pre name="code" class="csharp"><span style="font-size:18px;">public class TestMain { public static void main(String[] args) { AbstractTest.out(); } } </span> <span style="font-size:18px;

使用构造函数初始化成员数组

#include <iostream> using namespace std; class Box//盒子类 { public: //定义一个构造函数用于初始化对象数组 Box(int h, int w, int l); int volume();//计算盒子的体积 private: int height;//盒子的高 int width;//盒子的宽 int length;//盒子的长 }; //定义一个构造函数用于初始化对象数组 Box::Box(int h, int w, int l)

C#中实现抽象类里建立静态方法

这篇文章主要介绍了C#中实现抽象类里建立静态方法,需要的朋友可以参考下 本文简述了C#中实现抽象类里建立静态方法的解决办法,示例程序如下: 1 2 3 4 5 6 public class TestMain { public static void main(String[] args) { AbstractTest.out(); } } 如上面所示的程序是可以运行的. 一般情况下抽象类中可以包含抽象方法和非抽象方法,静态类中只能包含静态成员,所有的静态成员也只能包含在静态类中. 因为静态sta

C++构造函数及成员变量

class MyClass { public: int m_age; float m_hight; MyClass() { } ~MyClass() { } MyClass(int age, float hight) { this.m_age = age; this.m_hight = hight; } }; // 对于构造函数及成员变量的几点简单说明 // 1. 成员变数的内存排布顺序与定义顺序有关,即先写在前面 // 2. 带参数的构造函数可以写成如下形式: // MyClass(int a

Java基础第9天+final关键字、多态(上转型,下转型)、抽象类(特点,成员特点)、接口(特点,成员特点)

1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: A:局部变量 a:基本类型 值不能发生改变 b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的 B:初始化时机 a:只能初始化一次. b:常见的给值 定义的时候.(推荐) 构造方法中. 2:多态(掌握) (1)同一个对象在不同时刻体现出来的不同状态. (2)多态的前提: A:有继承或者实

C++中构造函数初始化成员列表总结

1.只能在构造函数初始化列表初始化的成员变量的类型? a.const成员变量 b.引用类型的成员变量 c.static不能在初始化列表中进行初始化 d.类成员变量中有自定义类型的变量最好在初始化列表中进行初始化 2.初始化列表的顺序? 初始化列表的初始化顺序是依据类成员变量定义的顺序来决定的. 3.关于static const是否应该在初始化成员列表中初始化? static const为全局静态常量,全局的意思是该变量属于整个类而非某个类实例,所以 不能再初始化列表中进行初始化.

构造函数--2.成员

function Demo(name,age){ this.name = name this.age = age this.sing = function(){ console.log(this.name + "唱歌") } } let lx = new Demo('张三',10) lx.sing() Demo.sex = '男' 构造函数 的静态成员和实例成员 实例成员 就是构造函数内部通过thist添加的属性和方法(成员) 如 name,age,sing.实例成员只能通过实例化的对