类对象

Java面试题30——面向对象特征之多态

前提是你 提交于 2020-01-24 09:46:08
面向对象特征——多态 多态有两种描述方式,一种是方法的多态性、一种是对象的多态性。多态是发生在编译期间的。 一、方法的多态性: ① 方法的重载:同一个方法名称,会根据传入参数的类型及个数不同执行不同的方法体; ② 方法的覆写: 同一个方法,会根据子类的不同,实现不同的功能。也就是继承了父类的多个子类对父类方法的重写,导致了方法的多态性。 二、对象的多态性(指的是发生在继承关系之中,子类和父类之间转换问题) 父类对象——子类实例: ① 向上转型(自动完成):父类 父类对象 = 子类实例 <new 实现> 子类对象——父类实例: ② 向下转型(强制完成):子类 子类对象 = (子类)父类实例 <new 实现> 下面看一个实例,让我们加深对多态的理解!! class A { public void m(A a) { System.out.println("AA"); } public void m(D d) { System.out.println("AD"); } } class B extends A { @Override public void m(A a) { System.out.println("BA"); } public void m(B b) { System.out.println("BD"); } public static void main(String[]

异常处理

风格不统一 提交于 2020-01-23 06:26:31
""" class MyMeta(type): # 用于新建类对象 def __new__(cls, *args, **kwargs): print(MyMeta) # print(*args) # print(**kwargs) # 调用type通过__new__方法来创建一个空的类对象,已经将三个组成部分都放到类对象中了 res = type.__new__(cls,*args) return res def __init__(self,class_name,bases,namespace): print("init,run") print(self) class Student(metaclass=MyMeta): pass # print(Student) """ """ new和init的区别 new比init先执行,其作用是创建一个空的类对象 作为一个类对象,必须具备三个组成部分,所以调用type中的new来完成组装 得到这个类对象后需要将其返回,以供init来使用 """ """ 异常: 与正常情况不同 在程序中,程序的正常执行过程,一行一行执行,直到所有代码都执行完 如果在执行过程中出现了错误,导致了代码无法执行完毕,就称之为异常 异常就是代码执行过程中出错了 常见的异常: """ # 1.语法错误 # a = # SyntaxError: invalid

Java核心技术笔记——第 12 章 反射

对着背影说爱祢 提交于 2020-01-22 07:40:32
转载自:[ https://www.cnblogs.com/chanshuyi/p/head_first_of_reflection.html ] 12 反射 1. 引入反射 通常情况下,调用一个类的方法的步骤如下: 创建该类的对象。 调用该对象的方法。 通过这种方式调用方法时,必须要知道类的定义以及类的所有属性和方法。代码如下: Apple apple = new Apple(); //直接初始化,「正射」 apple.setPrice(4); 另一种调用类方法的方式是:反射。示例如下: //获取类的class对象 Class clz = Class.forName("com.chenshuyi.reflect.Apple"); //获取类的指定方法的method对象 Method method = clz.getMethod("setPrice", int.class); //获取类的默认构造器 Constructor constructor = clz.getConstructor(); //创建类的对象 Object object = constructor.newInstance(); //调用方法 method.invoke(object, 4); 上面两段代码的执行结果,其实是完全一样的。但是其思路完全不一样,第一段代码在未运行时就已经确定了要运行的类(Apple)

浅谈数据挖掘

☆樱花仙子☆ 提交于 2020-01-21 14:06:56
数据挖掘其实是一种深层次的数据分析方法。数据挖掘可以描述为:按企业既定业务目标,对大量的企业数据进行探索和分析,揭示隐藏的、未知的或验证已知的规律性,并进一步将其模型化的先进有效的方法。 应用的技术包括:数据库技术、人工智能技术、数理统计、可视化技术、并行计算等方面。 数据挖掘与传统的数据分析(如查询、报表、联机应用分析)的本质区别是数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。数据挖掘所得到的信息应具有先知,有效和可实用三个特征。 数据挖掘的目标是 从数据库中发现隐含的、有意义的知识,主要有以下五类功能。 1.自动预测趋势和行为数据挖掘自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。 2.关联分析数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。 3.聚类数据库中的记录可被划分为一系列有意义的子集,即聚类。 4.概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。 5.偏差检测数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。 数据挖掘技术包括关联分析、序列分析、分类、预测、聚类分析及时间序列分析等。 1.关联分析主要用于发现不同事件之间的关联性

JAVA编程思想——分析阅读

点点圈 提交于 2020-01-21 12:37:51
需要源码、JDK1.6 、编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力、领域建模能力 其他: 海明威的硬币:老人与海 工具准备: java编程思想电子版 别人整理的思维导图 前言 适用范围:Java SE5/6 版本。 Java的设计目标是:为程序员减少复杂性,缩短代码的开发时间,跨平台复用。 学习方法:一模式或一节点就进入一练习,思维与实践并行,现学现卖。 每当我认为我已经理解了并发编程时,又会有新的奇山峻岭等待这我去征服。——作者都花了好几个月写并发这一篇章并发出这样的感慨,我们又有什么理由妄自菲薄呢。 绪论 学习语言时:需要在头脑中创建一个模型,以加强对这种语言的深入理解;如果遇到了疑问,就将它反馈到头脑的模型中并推断出答案。 疑问:模型是什么意思?java略图?宏语言是什么? A:模型指的是思维导图。有个一整个的概念。 按照人类学习语言的方式。? 一、对象导论 1 知识 人们所能够解决的问题的复杂性直接取决于抽象的类型和质量。类型即指所抽象的是什么,也可以说用的是什么类型的语言。Java,C ,汇编,Python等。其中想C或者汇编要基于计算机的结构来求解问题,面向过程;而Java 等面向对象的语言是基于问题来求解,面向对象。 面向对象的5个基本特性

JAVA基础学习总结,day17(线程)

自古美人都是妖i 提交于 2020-01-20 14:18:51
进程:其实就是.exe文件 线程:进程的一个执行单元 1.应用程序包含多个进程 2.进程可以包含多个线程 3.一个java程序其实就是一个进程,一个进程就相当于一个单核cup 并行:同时执行 并发:交替执行 多线程并行:多条线程同时执行 多线程并发:多条线程同时请求执行,但是一个cpu一次只能执行一条线程,所以让其交替执行,但是由于切换速度比较快,所以你看起来像多线程并行 java中研究的就是多线程并发 1.java程序默认会有两条线程,一条是main线程,一条是垃圾回收线程 2.线程的调度是抢占式调度,也就是随机调度 创建线程类 java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例 一条线程执行一段任务(一段代码) 创建线程并启动线程的方式 创建线程并启动线程方式一 :通过继承Thread类 创建一个子类继承Thread类 重写从Thread类继承过来的run()方法,把子线程需要执行的代码放入run()方法中 创建该子类对象 使用该子类对象调用start()方法启动线程 public class MyThread extends Thread { /** * 利用继承中的特点 * 将线程名称传递 进行设置 * */ public MyThread ( String name ) { super ( name ) ; } /*

【辫儿哥大白话】到底什么是PHP设计模式?[基础篇] —— 注册树模式

怎甘沉沦 提交于 2020-01-20 01:54:51
本文适合对PHP语言有基本基础的童鞋食用,配合框架研究,基础实践效果更佳~ 个人整理,心得体会,欢迎讨论指导. 这学PHP语言学到已经程度,是不是已经受够了基础的原生开发瞎乱写,模块随意乱丢的情况啊?有些有强迫症的童鞋肯定忍不住!那有没有一套 规则 来使这些杂乱无章的调用变得 井井有条 呢?来来来,一起研究一下奥。 注册树模式使用场景 假设我们现在是一家 建筑工程队 好不容易接到一个活儿,要去盖一个楼!但是俺们现在手里没有工具,那咋办,就要赶紧去 买工具 ,买钉子锤子大电钻,等我们工具买齐了之后,准备开始干活儿了~结果已经过去一个星期了,人家直接找到别人去承包工作了。那么假如我们 提前把工具准备好 是不是就可以避免这个问题了!其中 工具 就相当于我们需要New创建的Model类的 实例 。 注册树模式的实现 首先我们新建一个 “register.php” 的注册树处理文件 首先注册树模式的主要设计思路是 将一些对象注册到全局树种,使之可以再任意地方去调用这个对象 ,我们在段代码中 其中的 $objects 便是一个全局的注册树,所有要使用的Model类对象均存放在这里树中那,那么使用这种设计模式之后在任意地方便可直接使用树中的 get() 方法调取。 $db = Register : : get ( 'db1' ) ; //调取系统定义好的db1类对象 不过有一点要注意:

STL之string的详细介绍

坚强是说给别人听的谎言 提交于 2020-01-20 01:24:35
什么是STL? STL(standard template libaray )标准模板库 是C++标准库的重要组成部分 不仅是一个可以复用的组件库 更是一个包罗数据结构算法的软件框架 以下是STL的六大组件 大概了解一下以后会详细介绍。 STL六大组件: 1.仿函数 如:greater less 2.算法 如:find swap reverse sort merge 3.迭代器 如:iterator const_iterator reverse_iterator const_reverse_iterator 4.空间配置器 如:allocator 5.容器 如:string vector list deque map set multimap mutilset 6.配接器 如:stack queue priority_queue 什么是string? string是表示 字符串的字符串类 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 string在底层实际是: basic_string 模板类的别名 ,typedef basic_string<char, char_traits, allocator> string; 不能操作多字节或者变长字符的序列。 在使用string类时必须包含头文件 <string> 以及 using

Java包装类缓存

霸气de小男生 提交于 2020-01-19 11:44:08
1.基本概念   在jdk1.5及之后的版本中,Java在5大包装类中(Byte,Charactor,Short,Integer,Long)增加了相应的 私有静态成员内部类 为相应包装类对象提供缓存机制,Integer包装类的 内部缓存类 源码如下:   正如源码中所指,在自动装箱的基础上, 缓存机制 才会发生作用,当包装类加载时,内部类会初始化一个长度为((high-low)+1)的包装类类型数组,low有固定值为-128,而high的默认值为127,还可以通过系统配置文件进行修改,自定义high的取值范围是127-----(Interger.MAX_VALUE+127),Integer.MAX_VALUE是int类型变量的最大正数取值,其缓存机制是:当通过自动装箱机制创建包装类对象时,首先会判断数值是否在-128----127的范围内,如果满足条件,则会从缓存中寻找指定数值,若找到缓存,则不会新建对象,只是指向指定数值对应的包装类对象,否则,新建对象。 2.经典笔试题 1 /** 2 * Created by andrew on 2017/2/24. 3 */ 4 public class Test { 5 public static void main(String[] args) { 6 Integer a = new Integer(100); 7 Integer b =

Python socket 基础(Client) - Foundations of Python Socket

孤街浪徒 提交于 2020-01-19 03:45:28
1 Python socket 基础- Foundations of Python Socket 2 3 建立socket - establish socket 4 import socket 5 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 6 # s = 通信类型(type) + 协议家族(protocol) 7 # AF_INET = IPV4 ; AF_INET6 = IPV6 8 # SOCK_STREAM = TCP ; SOCK_DGRAM UDP 9 10 s.connect(("www.zzyzz.top",80)) 11 # s.connect((IP,PORT)) 12 # python 中 socket 对象的 connect()方法会利用 DNS 把域名解析成 IP 13 14 寻找端口号 - detect the port 15 port = socket.getservbyname('http','TCP') 16 # 查询系统特定服务的端口号, 小于1024 由 IANA(Internet Assigned Numbers Authority)分配. 17 # socket.getservbyname( protocol name, port name) 18 19 从 socket