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. 菜鸟帮你跳过openstack配置过程中的坑

    一:前言 对于一个以前做java全栈工程师而言,而且没学过Linux,很少用虚拟机(还是在大学的时候简单的用过),去配置openstack我想我入的坑肯定比有基础的一定要多,躺在每个坑中徘徊思索的时间 ...

  2. java中List Array相互转换

    List to Array List 提供了toArray的接口,所以可以直接调用,转为object型数组 List<String> list = new ArrayList<Str ...

  3. coder该何去何从

    无论是什么语言的学习,都不是一帆风顺的,如今随着编程大军的壮大,工作越来越难找,各位coder已经把中心偏移到了学历上面,导致技术水平的参差不齐,以及虚假学历的泛滥,这样的恶性循环下,不知前路在何方?

  4. UIButton 中高亮取消

    1.图片 取消高亮方法 a.第一种方法 [withdrawalBtn setAdjustsImageWhenHighlighted:NO]; b.第二种方法 [withdrawalBtn setIma ...

  5. 强密码和弱密码并没有什么区别?NIST密码安全标准更新:不再建议密码要求混合大写字母、字符和数字

    作为一名认真负责的小编,每次注册账号设置密码的时候都是最痛苦的,太简单的怕被破解,太难的又记不住. 等你好不容易记住密码,三个月后IT同学过来拍拍你的肩膀,"你的密码到期了,记得改啊--&q ...

  6. DesiredCapabilities参数配置及含义

    一.DesiredCapabilities的作用: 负责启动服务端时的参数设置,启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉 ...

  7. JMeter元件的作用域和执行顺序

    元件的作用域 配置元件:会影响其作用范围内的所有元件,作用范围是最大的,只要创建就对所有元件起作用. 前置处理器:在其作用范围内的每一个Sample元件之前执行: 定时器:对其作用范围内的每一个Sam ...

  8. HAOI2015 树上操作

    HAOI2015 树上操作 题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 x 为根 ...

  9. 利用Python实现kNN算法

    邻近算法(k-NearestNeighbor) 是机器学习中的一种分类(classification)算法,也是机器学习中最简单的算法之一了.虽然很简单,但在解决特定问题时却能发挥很好的效果.因此,学 ...

  10. 高CPU业务场景下的任务分发方案Gearman搭建一览

      Gearman是当年LiveJournal用来做图片resize的,大家也明白图片resize是一个高CPU的操作,如果让web网站去做这个高CPU的功能,有可能会拖垮你的 web应用,那本篇我们 ...