class中的private、public、protected

最近看了一些视频顺便总结一下class中的这几个类型以及继承

public:

在C++和C#中类的用法,语法是差不多的。当变量,函数之类的对象放在public中时,说明这些变量和函数是可以被外界访问的,自己本身可以使用,也可以在其他函数中调用。

private:

顾名思义,就是私有的,只有自己本身可以调用,其他外来的函数,是不能访问到的,是属于class中内部的。

protected:

在这个区域的东西,能够访问的就是自己本身-父类,还有衍生出来的子类。

在C++代码例子如下:

#include<iostream>
using namespace std;
class A{//定义一个父类
public:
A():i(0){
cout << "A::A()" << endl;
}
~A(){
cout << "~A::A()" << endl;
}//以上是构造函数和析构函数
/*构造函数我认为主要是用于对一些数值进行初始化,当然没有这个函数存在也可以,
然后析构函数我认为就是用来回收内存的,就是当它整个类的使用过后,回收其使用的内存*/
protected://表示只有它自己和子类可以访问
void set(int ii) {
i=ii;
cout << i << endl;
}
private://只有自己才能够访问的,可以防止外部对其内部数据的修改。
int i;// i是私有的,只有父类可以调用;
};
class B : public A{//B为A的子类-也是和继承有关
public :
void f(){
set(20);//可以使用
// i=30;
} };
/*在调用B类时,B类继承了A所有的部分,当然不包括private部分
B可以在A的基础上添加一些自己所需要的性质,因此在调用B时,可以调用A的函数*/
int main()
{
B b;//定义一个B类型
int n;
cin >> n;
//b.set(n);//此时在main()函数中不能调用 因为set()函数只能在B中使用,
b.f();//B类函数的调用
return 0;
}

C#代码例子:

class A
{
public int c;//所有都可访问
public void print() { Console.WriteLine("class A :: print()"); }//定义函数
public A()
{
this.d = 10;//初始化定义
Console.WriteLine("A的构造函数");
}
~A()
{
Console.WriteLine("析构函数");
}
protected void f()//只有A和B可以访问
{
print();
Console.WriteLine(d + e);
}
private int d, e=20;//只有A可以访问
}
class B : A//B继承A,B是A的子类
{
public void sum(int x, int y)
{
Console.WriteLine(x + y);
f();
}
private int i=0;//B的私有变量
}
class Program
{
static void Main(string[] args)
{
A a=new A();//调用
B b=new B();
a.print();
b.sum(1, 1);
}
}

继承:

继承的例子也在以上代码中,主要是父类的派生。继承允许我们根据一个类来定义另一个类来定义一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。

abstract:

abstract可以用来修饰类,方法,属性,索引器和时间,这里不包括字段. 使用abstrac修饰的类,该类只能作为其他类的基类,不能实例化,而且abstract修饰的成员在派生类中必须全部实现,不允许部分实现,否则编译异常.C#中的abstract类不能被实例化,他只提供其他类的继承的接口。我自己理解成它就是作为子类而存在的,给其他class调用。目测很抽象。

例子:

abstract class MyAbs
{
public void HELLO()
{
Console.WriteLine("hello world");
}
}
class MyClass : MyAbs
{
}
class Program
{
static void Main(string[] args)
{
MyClass a = new MyClass();
a.HELLO();
//MyAbs b = new MyAbs();这是无法建立的
}
}

多态性:

多态性意味着有多重形式。在面向对象编程范式中,多态性往往表现为"一个接口,多个功能"。可以理解成出现函数同名的情况,但是参数类型,数量不同,出现不同性质的函数。

代码例子:

using System;
namespace PolymorphismApplication
{
class Printdata
{
void print(int i)//不同的参数类型
{
Console.WriteLine("Printing int: {0}", i );
}
void print(double f)
{
Console.WriteLine("Printing float: {0}" , f);
}
void print(string s)
{
Console.WriteLine("Printing string: {0}", s);
}
static void Main(string[] args)
{
Printdata p = new Printdata();
// 调用 print 来打印整数
p.print(5);
// 调用 print 来打印浮点数
p.print(500.263);
// 调用 print 来打印字符串
p.print("Hello C++");
Console.ReadKey();
}
}
}

目前感觉一些部分懵逼中

多态性详细分类

在此望:路过大佬,大牛,指导

class中的东西和继承、多态的概念的更多相关文章

  1. C++内存中的封装、继承、多态(上)

    C++内存中的封装.继承.多态(上) 继我的上一篇文章:浅谈学习C++时用到的[封装继承多态]三个概念 此篇我们从C++对象内存布局和构造过程来具体分析C++中的封装.继承.多态. 一.封装模型的内存 ...

  2. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  3. Java继承多态中的方法访问权限控制

    java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...

  4. 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性

    原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...

  5. python面向对象中的封装、继承、多态

    封装 可以简单的理解为隐藏一切可以隐藏的实现细节,只向外界提供简单的编程接口.我们在类中定义的方法其实就是把数据和数据的操作封装起来了,在我们创建了对象之后,只需要给对象发送一个消息(调用方法)就可以 ...

  6. python基础语法15 面向对象2 继承,多态,继承json模块中JSONEncoder,并派生出新的功能

    继承 1.什么是继承? 继承是一种新建类的方式,新建的类称之为子类或派生类,继承的父类称之为基类或超类. - 在Python中,一个子类可以继承多个父类.(面试可能会问) - 在其它语言中,一个子类只 ...

  7. Java开发知识之Java的继承多态跟接口*

    Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...

  8. 第五节:详细讲解Java中的接口与继承

    前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...

  9. Python设计模式 - 基础 - 封装 & 继承 & 多态

    面向对象的核心是对象,世间万物都可以看作对象,任何一个对象都可以通过一系列属性和行为来描述,可以包含任意数量和类型的数据或操作.类是用来描述具有相同属性和方法的所有对象的集合.类通常是抽象化的概念,而 ...

随机推荐

  1. akoj-1074-人见人爱A^B

    人见人爱A^B Time Limit:1000MS  Memory Limit:65536K Total Submit:91 Accepted:55 Description 求A^B的最后三位数表示的 ...

  2. 从入门到放弃,.net构建博客系统(二):依赖注入

    文章目录:<从入门到放弃,.net构建博客系统> 从入门到放弃,.net构建博客系统(一):系统构建 从入门到放弃,.net构建博客系统(二):依赖注入 上一篇中有讲到项目启动时会进行io ...

  3. RSA简介(三)——寻找质数

    要生成RSA的密钥,第一步就是要寻找质数,本节专讲如何寻找质数. 我们的质数(又称素数).合数一般是对正整数来讲,质数就是只有1和本身两个的正整数,合数至少有3个约数,而1既不是合数也不是质数. 质数 ...

  4. Quartus16.0如何使用TCL脚本

    前言 TCL脚本语言在EDA工具中使用频繁,本文主要介绍使用TCL脚本文件进行引脚分配,避免手动分配以及分配出错: 流程 1.准备好你的TCL脚本文件,举个栗子(脚本文件内容): 2.在Quartus ...

  5. ASP.NET MVC HtmlHelper用法大全

    HTML扩展类的所有方法都有2个参数: 以textbox为例子public static string TextBox( this HtmlHelper htmlHelper, string name ...

  6. Python 写网络爬虫思路分析

    首先从程序入口开始分析,在程序入口处传入一个待爬取的网址, 使用下载器Html_downloader类下载该地址的内容,使用解释器 parser分析内容,利用BeautifulSoup包抓取想要爬取的 ...

  7. Webstorm 提示 Can't use Subversion command line client

    Webstorm 提示 Can't use Subversion command line client Webstorm 提示 Can't use Subversion command line c ...

  8. Ecplise插件安装方法

    eclipse3.5以前: 安装Eclipse插件无非两种方式: 1.直接copy插件到features/plugins目录 2.在links目录下创建链接文件 eclipse3.5及以后版本: 1. ...

  9. RSA简介(四)——求逆算法

    此处所谓求逆运算,是指在模乘群里求逆. 第一节里提到互质的两个定义: (1)p,q两整数互质指p,q的最大公约数为1. (2)p.q两整数互质指存在整数a,b,使得ap+bq=1. 只要明白了欧几里得 ...

  10. Springmvc+mybatis的定时器配置文件spring-quartz.xml

    <!-- 定时器配置文件---.xml 一个cron表达式有至少6个(也可能是7个)由空格分隔的时间元素.从左至右,这些元素的定义如下: 1.秒(0–59) 2.分钟(0–59) 3.小时(0– ...