类对象

JAVASE——8

与世无争的帅哥 提交于 2020-02-25 22:24:25
final 内部类 final: 不可改变。可以用于修饰类、方法和变量。 类:被修饰的类,不能被继承。 方法:被修饰的方法,不能被重写。 变量:被修饰的变量,不能被重新赋值 public:公共的。 protected:受保护的 default:默认的 private:私有的 成员变量使用 private ,隐藏细节。 构造方法使用 public ,方便创建对象。 成员方法使用 public ,方便调用方法。 内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。 内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的成员,必须要建立内部类的对象。 外部类名.内部类名 对象名 = new 外部类型().new 内部类型(); 匿名内部类 :一个 带具体实现 的父类或者父接口的匿名的 子类对象 。 Object类 toString 方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。 由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。 equals :调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。 如果没有覆盖重写equals方法,那么Object类中默认进行=

Java中的File类

心不动则不痛 提交于 2020-02-25 19:04:13
一、什么是File类 File类是SUN公司提供给开发者操作文件和文件夹的一个类。Java中万物皆对象,计算机中万物皆文件。 获取File类有三种方式: File(String pathName); 根据对应的文件路径创建获取对应的File类对象,可以是文件,可以是文件夹。 File(String parent, String child); 根据对应的父目录文件夹路径,以及子文件名或者子文件夹名,创建对应的File类对 象。 File(File parent, String child); 根据对应的父目录文件夹File类对象,以及子文件名或者子文件夹名,创建对应File 类对象。 路径中有一个很重要的东西,那就是路径分隔符 Windows 分隔符 默认是 \ Linux UNIX macOS 分隔符 默认是 / Windows同样支持Linux分隔符 / 没有任何问题 根据当前系统来区分不同的分隔符可以使用 File.separatorChar 二、创建文件和文件夹 1、通过File类对象调用,创建对应File类对象中保存的路径的普通文件 boolean createNewFile ( ) ; 创建成功返回true,创建失败返回false 返回false的原因: 1. 路径不合法。 2. 对应的文件夹没有写入权限。 rwxr-xr-x 3. 对应当前的文件已经存在。 2

面向对象小结

こ雲淡風輕ζ 提交于 2020-02-24 23:07:02
面向对象是相对面向过程而言的,面向过程强调的是功能行为,面向对象是将功能封装进对象,强调具备了功能的对象。 [万物皆对象] 面向对象三大特征:封装、继承、多态 类和对象的关系: 类:对现实生活中事物的描述 对象:就是这类事物,实实在在存在个体 描述事物就是描述事物的属性(对应类中变量)和行为(对应类中方法),属性和行为共同 称为类的成员(成员变童和成员方法) 成员变量作用于整个类中,局部变量作用于函数中,或者语句中 成员变量在堆内存中,因为对象的存在,才在内存中存在 局部变量:存在栈内存中 封装: 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式 好处:将变化隔离、便于使用、提高重用性、提高安全性 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问 private (私有):权限修饰符,用于修饰类中的成员(成员变里,成员函数),私有只在本类 中有效。 static用于修饰成员(成员变里和成员函数) 被儋饰的成员:随着类的加载而加载,优先于对象存在,被所有对象所共享,可以直接被类 名调用。 类名.静态成员[方法区、共享区、数据区]_--存放类中的方法和共享数据。 什么时候定义静态函数:当功能内部没有访问到非静态数据(对象的特有数据),那么该功 能可以定义成静态的,用类名直接调用。 继承: 1、提高了代码的复用性 2、让类与类之间产生了关系,有了这个关系

面对对象编程

点点圈 提交于 2020-02-24 08:32:22
面向对象编程 标签(空格分隔): python 基础 --- 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象(object-oriented ;简称: OO) 至今还没有统一的概念 我这里把它定义为: 按人们 认识客观世界的系统思维方式,采用基于对象(实体) 的概念建立模型,模拟客观世界分析、设 计、实现软件的办法。 面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。 面向对象编程的2个非常重要的概念:类和对象 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类 #类 人以类聚 物以群分。 具有相似内部状态和运动规律的实体的集合(或统称为抽象)。 具有相同属性和行为事物的统称 类就是创建对象的模板 #对象 某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。 可以是直接使用的 #python中的类 类(Class) 由3个部分构成 类的名称:类名 类的属性:一组数据 类的方法:允许对进行操作的方法 (行为

java_反射

左心房为你撑大大i 提交于 2020-02-24 02:14:46
java_反射 什么是反射 概念 放射:将类的各个部分封装为其他对象,这就是反射机制。 java代码在内存中经历的三个阶段 1、 Source 源代码阶段 执行javac编译命令从.java文件到.class文件的过程都是在源代码阶段,.class字节码文件会将类分为多个部分,其中分为成员变量部分,成员方法部分,构造方法部分等。 2、 Class 类对象阶段 通过ClassLoader(类加载器)将字节码文件加载到内存中。 通过Class类对象来描述进入内存中的字节码文件的特征和行为。将成员变量、成员方法、构造方法等封装成单独的对象放入Class类对象中。 最后我们可以通过Class对象的一些行为创建具体的某个对象。 3、 runtime 运行时阶段 new 类(); 反射的好处 在程序的运行期间操作这些对象。 降低程序的耦合性,提高程序的可扩展性。 获取Class类对象的方法 获取class类对象的方式有三种,分别对应的java代码经历的三个阶段 1、 Class.forName("全类名"); 将字节码文件加载进内存,返回class对象 多用于配置文件,将类名定义在配置文件中 2、 类名.class; 通过类名的属性class获取 多用于参数传递 3、 对象.getClass(); getClass()方法是定义在Object类中的 多用于对象获取字节码 同一个字节码文件(*

Java基础-接口与多态

ε祈祈猫儿з 提交于 2020-02-23 09:23:41
一、接口 1.1 接口的概念 接口是功能的集合,同样可看做是一种数据类型。 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。 请记住:一切事物均有功能,即一切事物均有接口。 1.2 接口的定义 与定义类的class不同接口定义时需要使用interface关键字。定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字的编译后仍然会产生.class文件。这点可以让我们将接口看做是一种只包含了功能声明的特殊类。 定义格式: public interface 接口名 { 抽象方法1; 抽象方法2; 抽象方法3; } 注意: (1)接口中的方法均为公共访问的抽象方法 (2)接口中无法定义普通的成员变量,必须定义为常量。 public static final 数据类型 变量名 = 值; 1.3 类实现接口 类与接口的关系为实现关系,类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。 其他类(实现类)实现接口后,就相当于声明:”我应该具备这个接口中的功能”。实现类仍然需要重写方法以实现具体的功能。 格式如下: class 类 implements 接口 { 重写接口中方法 } 在类实现接口后,该类就会将接口中的抽象方法继承过来,此时该类需要重写该抽象方法

反射

谁说胖子不能爱 提交于 2020-02-22 11:50:49
反射 示例类 User 类: class User { String name; int id; public User() { } public User(String name, int id) { this.name = name; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } } ReflectTest 类: public Class ReflectTest { pulic static void main(String[] args) { try { //测试 } catch (Exception e) { e.printStackTrace(); } } } 类对象 不同的类区别在于有不同的方法,不同的属性。类对象,就是用于描述这种类,都有什么属性,什么方法的。 获取类对象的方法 Class.forName("mypackage.User") User.class new User().getClass() 一个 ClassLoader 下

Java面向对象大致梳理

别说谁变了你拦得住时间么 提交于 2020-02-20 13:01:03
面向对象思想、 面向对象思想概述: Java设计语言面向对象: Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 类和对象: 类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该 类事物 属性:就是该事物的状态信息。 行为:就是该事物能够做什么。 对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性 和行为。 类与对象的关系 : 类是对一类事物的描述,是抽象的。 对象是一类事物的实例,是具体的。 类是对象的模板,对象是类的实体。 面向对象之封装: 概述: 面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

C++ 内存分配(new,operator new)详解

做~自己de王妃 提交于 2020-02-20 04:12:10
参考: C++ 内存分配(new,operator new)详解 如何限制对象只能建立在堆上或者栈上 new运算符和operator new() new:指我们在C++里通常用到的 运算符 ,比如A* a = new A; 对于new来说,有new和::new之分,前者位于std operator new():指对new的重载形式,它是一个 函数 ,并不是运算符。对于operator new来说, 分为全局重载和类重载 ,全局重载是void* ::operator new(size_t size),在类中重载形式 void* A::operator new(size_t size)。还要注意的是这里的operator new()完成的操作一般只是分配内存,事实上系统 默认的全局 ::operator new(size_t size)也只是调用malloc分配内存,并且返回一个void*指针 。而构造函数的调用(如果需要)是在new运算符中完成的 new和operator new之间的关系 A* a = new A;我们知道这里分为两步: 1.分配内存,2.调用A()构造对象。 事实上,分配内存这一操作就是由operator new(size_t)来完成的,如果类A重载了operator new,那么将调用A::operator new(size_t ),如果没有重载,就调用:

关于python的类成员、实例成员、静态成员的对比与联系

六眼飞鱼酱① 提交于 2020-02-20 02:15:39
preface:本文是https://blog.csdn.net/qq_31780525/article/details/72639491一文的补充。 Python中的静态成员、非静态成员,与C#的静态成员、非静态成员有着一种千丝万缕的区别,此文专门针对这种区别,进行详细讨论。 推荐大家先看代码段,再看结论。边看代码段边思考。 首先,我们不妨将这种不带get、set方法的类成员属性称作为“字段”(C++,C#的说法)。此时,有如下代码段: 代码段_1 class people: name="Skar" #这个“字段”,既是类的,也是实例的,本文给它起个名字,叫“调皮字段” age=20 #同样,这个“字段”,既是类的,也是实例的 p=people() #p是people的一个实例 print(p.name) #打印结果:"skar"。所以,p的名字叫“skar”,符合认知 print(people.name) #打印结果:"skar"。所以,people的名字叫“skar”,但不符合认知 print(p.age) #打印结果:20。所以,p的年龄为20,符合认知 print(people.age) #打印结果:20。所以,people的年龄为20,但不符合认知 所以,在代码段_1中,并没有真正的“类字段”,也就是C#中的静态字段。同样的,也没有真正的“实例字段”,也就是C#中的