c++,类的问题。private类型的是否只有类自己可以使用?与protect类型的有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++,类的问题。private类型的是否只有类自己可以使用?与protect类型的有啥区别相关的知识,希望对你有一定的参考价值。
private 成员只有本类成员和本类的友元可以访问,外面和子类不能访问protect成员除了本类成员和本类友元以为,子类继承后,子类的成员函数和子类的友元可以访问,但是外部还是不能访问追问
请问子类是什么意思
追答子类就是继承自该类的类,也叫做派生类
追问可以举个例子吗
追答class A
...
;
class B : public A
;
这个B类就是A的子类
B类这样是什么意思
为什么B:public A
追答B类就是从A类继承的类
class B : public A
...
;
B类的名字呢?还有B类就是具有A类的所有东西,然后还可以再添加对吗
参考技术A protect涉及到类的继承。假设基类有一个protect成员,那么那个基类和继承该基类的派生类可以使用这个成员。 参考技术B public:所有人都可以访问;protected:只有自己和子类可以访问;private:只有自己可以访问。追答把友元也考虑一下呗
类的高级概念
1.访问修饰符
public 该类或非该类均可访问
private 只有该类可以访问
protected 该类及其子类的成员可以访问,同一个包中的类也可以访问
默认 相同数据包中的类可以访问
2.封装
访问修饰符的作用是限制属性和方法被使用和调用的范围。即指明了类
的数据成员和方法的能够被访问的程度。
如果一个类的组件(数据成员或方法)被声明为私有类型(private),
则任何该类外部的方法是无法访问该组件的。
封装的好处 类的成员变量可以成为只读或者只写的。列如:
salesperson类中的成员变量id是只读的,在salesperson对象实例化
后,id成员变量就无法改变了。
类可以对存储在其成员变量中的内容有一个整体的控制。
类的用户不需要知道类是如何存储数据的。类可以改变一个成员变量
的数据类型,而类的用户不需要改变其代码。
3. //外部类
public class outclass{
private int a = 10;//成员变量
public class Innerclass1{
//1.可以有访问修饰符
2.class文件的名字。外部类类名$内部类类名.class
3.就是一个完整独立的类
4.在本方法内可以产生对象,然后使用
}
public void test(){
int b = 10;//局部变量
//局部内部类 1.不能有访问修饰符 2.class文件的名字:外部类类名$序号+内部类的类名
class Innerclass2{ .class
3.就是一个完整独立的类
4.在本类的任意方法中都可以new出来,但是在第三方
类必须用外部类对象,new的方式产生内部类对象。
}
4.static
1.与对象无关。与类有关
2.全类共享一个值
3.预加载
static的方法不能操作非static的任何属性和方法
从实现上来说,static修饰的是被首先加载的,此时非static的还没有
加载到内存,所以static不能修饰构造,因为凡是static的都与对象无
关,而构造是专门用来产生对象的。
静态初始化块
在类加载的时候自动执行,只会执行一次,使用量很高,通常会把一程
序运行前的准备工作放在这里,让其加载期就完成准备。
实例化初始块
在产生对象的时候自动执行,在父类的构造方法之后,本类的构造方法
执行之前,使用量很少,因为完全可以把代码就写到本类构造方法前几
行。
静态内部类
在本类中任意方法中都可以new出来,在第三方类中要new出来,无需产
生外部类对象,只需外部类类名.的方式就可以了。
匿名内部类---局部内部类的特列
由于没有类名,所以是在产生对象的时候用语句告诉jvm它的结构
只能用一次,注意分号,括号的位置。
以上是关于c++,类的问题。private类型的是否只有类自己可以使用?与protect类型的有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
JAVA中public protected default private访问权限
”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?