成员变量

第七章 面向对象

六眼飞鱼酱① 提交于 2019-12-01 10:23:11
7.1 面向对象基础 面向对象编程 (Object Oriented Programming, OOP ,面向对象程序设计) 优点和应用场景 : 业务功能较多时,通过面向对象归类 数据封装(创建字典存储数据) 游戏示例:创建一些角色,并根据角色需要再创建任务 封装思想 :将同一类的函数封装到同一个py文件中,以后方便使用 面向对象 :将同一类的函数封装到同一个class中,以后方便使用 对象名 :命名首字母大写 Note1(1) 函数式的应用场景 --> 各个函数之间是独立且无共用的数据 1. 基础概念 类 :具有相同方法和属性的一类事物 对象 、 实例 :一个拥有具体属性值和动作的具体个体 实例化 :从一个类得到一个具体对象的过程 # 定义一个类,Account class Account: # 方法, 哪个对象调用方法,其就是self def login(self,name): print(123) return 666 def logout(self): pass # 调用类中的方法 x = Account() # 实例化(创建)Account类的对象,开辟一块内存 val = x.login('henry') # 使用对象调用class中的方法 print(val) Note2(2) 应用场景 :用于很多函数,需要对函数进行归类和划分(封装) self :哪个对象操作

java基础 继承

有些话、适合烂在心里 提交于 2019-12-01 10:22:13
在继承的关系中,“子类就是一个父类”,也就是说,子类可以被当父类看待。 例如父类是员工,子类是讲师,那么“讲师就是一个员工”,关系:is-a。 定义子类的格式: public class 子类名称 extends 父类名称{ //.... } 在子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式。 直接通过子类对象访问成员变量, 等号左边是谁,就优先用谁,没有则向上找。 间接通过成员方法访问成员变量, 该方法属于谁,就优先用谁,没有则向上找。 来源: https://www.cnblogs.com/mantishell/p/11681199.html

成员变量的隐藏和方法重写

淺唱寂寞╮ 提交于 2019-12-01 10:03:59
一:成员变量的隐藏 子类继承的方法只能操作子类继承和隐藏的成员变量。子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量(需使用super关键字操作子类隐藏的成员变量(下次更新super关键字))。 Goods.java package chengyuanbianliangdeyincang; public class Goods { public double weight; public void oldSetWeight(double w) { weight=w; System.out.println("double型的weight="+weight); } public double oldGetPrice() { double price=weight*10; return price; } } CheapGoods.java package chengyuanbianliangdeyincang; public class CheapGoods extends Goods{ public int weight; public void newSetWeight(int w) { weight=w; System.out.println("int型的weight="+weight); } public double newGetPrice(

java中的final关键字的用法

强颜欢笑 提交于 2019-12-01 09:57:20
一 . 什么是 final 关键字? final 在 Java 中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作 final ,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。 凡是对成员变量或者本地变量 ( 在方法中的或者代码块中的变量称为本地变量 ) 声明为 final 的都叫作 final 变量。 final 变量经常和 static 关键字一起使用,作为常量。下面是 final 变量的例子: public static final String LOAN = "loan"; LOAN = new String("loan") //invalid compilation error final 变量是只读的,只能一次赋值,后边不能改变 在 Java 的继承体系中,子类可以在父类的基础上根据自己的需求来修改父类的内容来使子类更具个性,但是出于一些其他方面的考虑,我们不可能让子类随意的修改父类的内容,为了避免子类随意改写父类的内容, java 提供了 final 关键字来修饰不可变的内容, final 关键字可以修饰变量、方法、类。接下来从这三个方面来理解 final 关键字。 1.final 关键字修饰类 使用 final 来修饰的类叫作 final 类。 **final 类通常功能是完整的

Java内存模型

我是研究僧i 提交于 2019-12-01 09:52:42
Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。 原始的Java内存模型存在一些不足,因此Java内存模型在Java1.5时被重新修订。这个版本的Java内存模型在Java8中人在使用。 Java内存模型内部原理 Java内存模型把Java虚拟机内部划分为线程栈和堆。这张图演示了Java内存模型的逻辑视图。 每一个运行在Java虚拟机里的线程都拥有自己的线程栈。这个线程栈包含了这个线程调用的方法当前执行点相关的信息。一个线程仅能访问自己的线程栈。一个线程创建的本地变量对其它线程不可见,仅自己可见。即使两个线程执行同样的代码,这两个线程任然在在自己的线程栈中的代码来创建本地变量。因此,每个线程拥有每个本地变量的独有版本。 所有原始类型的本地变量都存放在线程栈上,因此对其它线程不可见。一个线程可能向另一个线程传递一个原始类型变量的拷贝,但是它不能共享这个原始类型变量自身。 堆上包含在Java程序中创建的所有对象,无论是哪一个对象创建的。这包括原始类型的对象版本

结构和联合

喜夏-厌秋 提交于 2019-12-01 09:26:48
结构和联合 阅读目录2904628156 结构体基础 结构的存储分配 作为函数参数的结构 位段 联合 回到目录 结构体基础 聚合类型 聚合类型: 能够同时存储超过一个单独的数据,C语言提供两种聚合数据类型数组和结构。 数组和结构的区别: 数组是相同类型的数据的聚合,结构是不同类型数据的聚合。 因为数组的元素长度相同可以采用下标方式访问,结构成员的长度不同,只能通过 名字 访问,不能通过下标来访问。 数组名在表达式中使用时被当做一个指针,而结构体变量在表达式中使用时不能被当做一个指针。 结构体的声明 结构的通常形式 struct tag(可选) { member-list }variable-list(可选); 基于以上形式,结构可以有如下几种声明: //形式1 struct { int age; char name[10]; } Person1, Person2; //形式2 struct PersonT { int age; char name[10]; } Person1; struct PersonT Person2; //形式3 struct PersonT { int age; char name[10]; }; struct PersonT Person1, Person2; 在形式2和形式3种,使用结构标签可以在将来的声明中用struct tag 作为struct

C++继承和多态

你说的曾经没有我的故事 提交于 2019-12-01 08:44:42
C++继承和多态 继承和派生 C++ 中的继承是类与类之间的关系, 继承(Inheritance) 可以理解为一个类从另一个类获取成员变量和成员函数的过程。 派生(Derive) 和继承是一个概念, 被继承的类称为父类或基类,继承的类称为子类或派生类。“子类”和“父类”通常放在一起称呼,“基类”和“派生类”通常放在一起称呼 当你创建的新类与现有的类相似 当你需要创建多个类,它们拥有很多相似的成员变量或成员函数时,使用继承。可以将这些类的共同成员提取出来,定义为基类,然后从基类继承 class Student: public People 继承的一般语法为: class 派生类名:[继承方式] 基类名{ 派生类新增加的成员 }; 继承方式: 包括 public(公有的)、private(私有的)和 protected(受保护的),此项是可选的,如果不写,那么默认为 private。 C++三种继承方式 继承方式 限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected(受保护的)。此项是可选项,如果不写,默认为 private(成员变量和成员函数默认也是 private) public、protected、private 指定继承方式 1) public继承方式 基类中所有 public 成员在派生类中为 public 属性;

java基础(32):类加载、反射

橙三吉。 提交于 2019-12-01 08:28:56
1. 类加载器 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 加载   就是指将class文件读入内存,并为之创建一个Class对象。   任何类被使用时系统都会建立一个Class对象 连接   验证 是否有正确的内部结构,并和其他类协调一致   准备 负责为类的静态成员分配内存,并设置默认初始化值   解析 将类的二进制数据中的符号引用替换为直接引用 初始化   就是我们以前讲过的初始化步骤 1.2 类初始化时机 1. 创建类的实例 2. 类的静态变量,或者为静态变量赋值 3. 类的静态方法 4. 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 5. 初始化某个类的子类 6. 直接使用java.exe命令来运行某个主类 1.3 类加载器 负责将.class文件加载到内在中,并为之生成对应的Class对象。 虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行 1.4 类加载器的组成 Bootstrap ClassLoader 根类加载器   也被称为引导类加载器,负责Java核心类的加载   比如System,String等。在JDK中JRE的lib目录下rt.jar文件中 Extension ClassLoader 扩展类加载器  

Java面试基础

一笑奈何 提交于 2019-12-01 07:27:35
1.面向对象和面向过程的区别? 面向过程:面向过程性能比面向对象高 面向对象:面向对象易维护、易复用、易扩展 2.Java 语言有哪些特点? 简单易学、面向对象(封装,继承,多态)、平台无关性( Java 虚拟机实现平台无关性)、可靠性、安全性、支持多线程、支持网络编程并且很方便、编译与解释并存。 3.JDK和JRE? JDK:Java Development Kit,它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。 JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。 4.Java和C++的区别? 都是面向对象的语言,都支持封装、继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存。 5.Java 面向对象三大特性 封装 继承 多态 封装:利用抽象数据类型将数据和操作数据的方法绑定起来,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,对数据的访问只能通过已定义的接口。

C++中的继承

前提是你 提交于 2019-12-01 07:22:42
继承:龙生龙,凤生凤,老鼠儿子会打洞。 sizeof可以验证继承了基类中的所有成员变量 public 的继承方式,结合子类对象对基类成员函数的调用,可以得到子类对基类的成员函数继承(所有资源都被继承。基类中public成员在子类中权限也是public。) #include<iostream> using namespace std; class Base { //父类 public: void Set(int pri,int pro,int pub) { _pri = pri; _pro = pro; _pub = pub; } void Print() { cout << _pri << " " << _pro << " " << _pub << endl; } int _pub; protected: int _pro; private: int _pri; }; class Son1 : Base //子类 //无继承方式 { }; class Son2 : public Base //子类 //public继承方式 { public: void Set(int pri, int pro, int pub) { _pri = pri; //这句报错:在子类中访问私有的成员变量不可以访问。 _pro = pro; //保护可以访问 _pub = pub; } }; int