类对象

Java内部类详解

六月ゝ 毕业季﹏ 提交于 2020-03-25 09:16:54
在一个类的里面再定义的类,叫做内部类,也可以叫做寄生类,在平时的编程中很少用到内部类,而且显的特别乱。 但是内部类也是有很大作用的: 提供了更好的封装,把类隐藏在外部类中,这样其他的类不能调到。 内部类可以使用外部类的所有数据,包括private修饰的。 在jdk中哟哟很多地方都用到了内部类,在集合的源码中,比如在ArrayList中为了实现Iterator接口,就利用了内部类实现了Iterator接口。 包含内部类的类叫做顶层类,顶层类只能用public和默认修饰,内部类可以用四种权限修饰符的任意一个。我们要访问内部类的时候,要通过外部类访问内部类,不能直接访问内部类。 package demo_Inner; public class Test { public static void main(String[] args) { Outer outer = new Outer(); outer.print();//外部类 Outer.Inner inner = new Outer().new Inner(); inner.print();//内部类 } } class Outer{ public class Inner{ public void print() { System.out.println("内部类"); } } public void print() {

重新复习-java 多态

ぐ巨炮叔叔 提交于 2020-03-24 11:42:09
多态的定义: 指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)简而言之就是: 对于同一动作做出的响应产生不同的结果 多态存在的必要条件: 在继承的基础上 要有重写 父类引用指向子类对象(即向上转型) 多态存在的好处: 可替换性 (substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。 可扩充性 (extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。 接口性 (interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。 灵活性 (flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。 简化性 (simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。 多态的实现方式: 继承和接口 继承实现多态: 对于指向子类对象的父类引用,在处理该引用时,它适用于继承该父类的所有子类,子类对象的不同,对方法的实现也就不同,执行相同动作产生的行为也就不同。 如果父类对象是抽象类,则继承了该抽象类的子类必须父类中的所有抽象方法

OC中的特有语法

泪湿孤枕 提交于 2020-03-22 18:32:55
一、 分类 -Category 1. 基本用途 如何在不改变原来类模型的前提下,给类扩充一些方法?有 2 种方式 l 继承 l 分类( Category ) 2. 格式 分类的声明 @interface 类名 (分类名称) // 方法声明 @end 分类的实现 @implementation 类名 (分类名称) // 方法实现 @end 3. 好处 一个庞大的类可以分模块开发 一个庞大的类可以由多个人来编写,更有利于团队合作 给 NSString 增加一个类方法:计算某个字符串中阿拉伯数字的个数 给 NSString 增加一个对象方法:计算当前字符串中阿拉伯数字的个数 4. 给系统自带的类添加分类 5. 注意 Category可以访问原始类的实例变量,但不能添加变量,只能添加方法。如果想添加变量,可以考虑通过继承创建子类 Category可以实现原始类的方法,但不推荐这么做,因为它是直接替换掉原来的方法,这么做的后果是再也不能访问原来的方法 多个 Category 中如果实现了相同的方法,只有最后一个参与编译的才会有效 二、 类的本质 1. 类也是个对象 其实类也是一个对象,是 Class 类型的对象,简称“类对象” Class 类型的定义 typedef struct objc_class *Class; 类名就代表着类对象,每个类只有一个类对象 2. +load 和 +

javascript对象---10 继承

不羁的心 提交于 2020-03-22 08:54:45
3 月,跳不动了?>>> 一、继承的概念 继承是面向对象的重要特征。继承是指子类对象拥有父类对象的属性与方法,同时子类对象可以覆盖扩展父类对象的属性和方法。 JS中继承的特点: 1.子类对象 拥有 父类对象 的 属性和方法; (把构造函数称为一个类,使用构造函数为当前对象初始化属性) 2.子类对象可以有自己的新属性和方法; 3.子类对象可以重写父类对象的方法; 4.JS中并没有专门的继承语法,但可以通过原型链机制实现。 把共有的属性封装在父类,子类继承 继承的优点 1.提供了一种优良的代码组合方式,提高了代码的重用性。 2.子类可以灵活调用父类的属性,同时可以扩展覆盖父类的属性,体现灵活性。 3.提供了代码的可维护性 二、原型继承方式 原型继承方式:通过原型链完成继承。任何对象都会通过原型链继承Oject函数的 prototype对象中的属性和方法 正常声明两个构造函数 ---人类 和学生 //人类 : 性别年龄-说话、跑跳 //人类中包括学生 --有学校 考试 //注意父类并不是专门为子类服务的,父类也会有相关的事例 function Person(name,age){ this.name = name; this.age = age; } Person.prototype.sayHello = function(){ console.log("名字:" +this.name);

Python类的静态属性、类方法、静态方法

本小妞迷上赌 提交于 2020-03-19 19:09:18
1、静态属性。@property。作用就是把类的函数属性,封装成类似数据属性。 class Student(object): school='szu' @property def printmassage(self): print('aaaa') s1=Student() s1.printmassage #aaaa 2、类方法:是类对象所拥有的方法,需要用修饰器 @classmethod 来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以 cls 作为第一个参数,能够通过实例对象和类对象去访问。 类方法一般有两个作用:一是访问类属性。二是修改类属性 class Student(object): school='szu' @classmethod def printmassage(cls): print(cls.school) s1=Student() Student.printmassage() #szu s1.printmassage() #szu 3、静态方法:静态方法实际上是独立的,依靠在类中,但实际是只是调取关系。只是名义上归类管理,实际上就是一个工具包,可以供类和实例调用。静态方法里不能直接调用类方法,要调用必须加上类名字去调用。 class Student(object): school='szu' @staticmethod def printmassage

Java面向对象--三大基本特征之多态性

半城伤御伤魂 提交于 2020-03-18 21:29:37
Java面向对象的三大基本特征是:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism),这三大基本特征是学习Java面向对象开发的基础和重点。本篇博客将详细介绍这三大基本特征中多态性的用法。 ☍ 多态性(Polymorphism) 多态性,是面向对象中最重要的概念,也是三大基本特征中最难的一个。简单的理解就是同一个行为具有多个不同表现形式或形态的能力,或者说多态就是同一个接口,使用不同的实例而执行不同操作。 ▴ 对象的多态性 ☃ 父类的引用指向子类的对象(可以直接应用在抽象类和接口上) ☃ 子类的对象可以替代父类的对象使用 ☄ 一个变量只能有一种确定的数据类型 ☄ 一个引用类型变量可能指向(引用)多种不同类型的对象 Person p = new Student(); //父类Peson变量p指向Student对象 ▴ Java引用变量有两个类型 ☃ 编译时类型:由声明该变量时使用的类型决定(看‘=’左边) ☃ 运行时类型:由实际赋给该变量的对象决定(看‘=’右边) //父类 --> 子类 Person-->Student-->GirlStudent // -->BoyStudent 编译时类型 Person p1 = new Student(); 运行时类型 Person p2 = new GirlStudent(); Person

关于内部类的剖析

◇◆丶佛笑我妖孽 提交于 2020-03-18 14:57:06
内部类根据使用不同的修饰符或者定位的位置不同,可以分为四种: ①  实例内部类:   内部类没有使用static修饰 ②  静态内部类:   内部类使用了static修饰 ③  局部内部类:   在方法中定义的内部类 ④  匿名内部类:   适合于仅使用一次的类,属于局部内部类的特殊情况 外部类的访问修饰符: 要么用public,要么缺省。 内部类看作是外部类的一个成员,好比字段,那么 内部类可以使用public/缺省/protected/private修饰 还可以是static修饰 ------------------------------------------------------------------------------ 实例内部类: 没有使用static修饰内部类,说明内部类属于外部类的对象,而不是属于外部类。 特点: 1: 创建实例内部类前,必须存在外部类对象,通过外部类对象创建内部类对象(当存在内部类对象时,一定存在外部类对象) 1 public class InstanceClass { 2 3 //创建一个内部类对象 4 Outter.Inner inner = new Outter().new Inner();//方法一 5 //创建一个内部类对象 6 Outter outter = new Outter(); 7 Outter.Inner

Java 多线程

╄→гoц情女王★ 提交于 2020-03-17 17:22:46
一、概述 理解多线程先要理解线程,理解线程先要理解进程。 1. 进程 一个正在执行的程序。 每个进程的执行都有一个执行的顺序,顺序是一个执行路径,也叫一个控制单元。 2. 线程 进程中独立的控制单元称为线程。 线程控制进程的执行。 进程中只要有一个线程在执行,进程就不会结束。 一个进程中至少存在一个线程。 3. 多线程 Java 虚拟机启动时,会有一个 java.exe 的执行程序,也就是一个进程。 这个进程中至少存在一个线程负责 java 程序的执行,这个线程的运行代码存在 main 方法中,这个线程称之为主线程。 JVM 启动时除了执行一个主线程,还会启动负责垃圾回收机制的线程。 在一个进程中有多个线程执行的方式,称为多线程。 4. 多线程的意义 多线程能让程序产生同时运行的效果,可以提高程序执行的效率。 例如: java.exe 进程执行主程序时,如果程序的代码非常多,在堆内存中会产生很多对象,而对象调用完后就会变成垃圾。如果垃圾过多的话,可能会导致堆内存出现内存不足的现象,影响程序的运行。这种情况下,如果只有一个线程在运行处理的话,程序执行的效率非常低;如果有多个线程在帮助处理的话,程序执行的效率将大大的提高。 例如:垃圾回收机制的线程在帮助进行垃圾回收的话,那堆内存空间的释放将快很多。 5. CPU 运行的原理 PC 上有很多程序“同时”进行,看起来好像是 CPU “同时

为什么匿名内部类的参数必须为finalhttp://feiyeguohai.iteye.com/blog/1500108

主宰稳场 提交于 2020-03-16 07:06:42
1) 从程序设计语言的理论上:局部内部类(即:定义在方法中的内部类),由于本身就是在方法内部(可出现在形式参数定义处或者方法体处),因而访问方法中的局部变量(形式参数或局部变量)是天经地义的.是很自然的 2) 为什么JAVA中要加上一条限制:只能访问final型的局部变量? 3) JAVA语言的编译程序的设计者当然全实现:局部内部类能访问方法中的所有的局部变量(因为:从理论上这是很自然的要求),但是:编译技术是无法实现的或代价极高. 4) 困难在何处?到底难在哪儿? 局部变量的生命周期与局部内部类的对象的生命周期的不一致性! 5) 设方法f被调用,从而在它的调用栈中生成了变量i,此时产生了一个局部内部类对象inner_object,它访问了该局部变量i .当方法f()运行结束后,局部变量i就已死亡了,不存在了.但:局部内部类对象inner_object还可能 一直存在(只能没有人再引用该对象时,它才会死亡),它不会随着方法f()运行结束死亡.这时:出现了一个"荒唐"结果:局部内部类对象 inner_object要访问一个已不存在的局部变量i! 6) 如何才能实现?当变量是final时,通过将final局部变量"复制"一份,复制品直接作为局部内部中的数据成员.这样:当局部内部类访问局部变量时,其实真正访问的是这个局部变量的"复制品"(即:这个复制品就代表了那个局部变量).因此

JavaSE 学习笔记之继承(五)

一个人想着一个人 提交于 2020-03-12 19:00:43
继 承 (面向对象特征之一) 好处: 1 :提高了代码的复用性。 2 :让类与类之间产生了关系,提供了另一个特征多态的前提。 父类的由来:其实是由多个类不断向上抽取共性内容而来的。 java中对于继承, java只支持单继承。 java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。 单继承:一个类只能有一个父类。 多继承:一个类可以有多个父类。 为什么不支持多继承呢? 因为当一个类同时继承两个父类时,两个父类中有相同的功能,那么子类对象调用该功能时,运行哪一个呢?因为父类中的方法中存在方法体。 但是 java支持多重继承。 A继承 B B继承 C C继承 D。 多重继承的出现,就有了继承体系。体系中的顶层父类是通过不断向上抽取而来的。它里面定义的该体系最基本最共性内容的功能。 所以,一个体系要想被使用,直接查阅该系统中的父类的功能即可知道该体系的基本用法。那么想要使用一个体系时,需要建立对象。建议建立最子类对象,因为最子类不仅可以使用父类中的功能。还可以使用子类特有的一些功能。 简单说:对于一个继承体系的使用,查阅顶层父类中的内容,创建最底层子类的对象。 子父类出现后,类中的成员都有了哪些特点: 1 :成员变量。 当子父类中出现一样的属性时,子类类型的对象,调用该属性,值是子类的属性值。 如果想要调用父类中的属性值,需要使用一个关键字: super This :