技术标签: java intellij-idea
一、向上转型向下转型
明确引用类型和对象类型的概念
首先要知道那个是引用类型,那个是对象类型
Hero h = new Hero();
有一个对象 new Hero(), 有一个引用 h
引用类型 ----> Hero
向上转型:子类转为父类类型
Zi zi = new Zi();
zi.setSex("男");
zi.setMajor("美容美发");
boolean flag = zi instanceof Fu;
System.out.println(flag);
Fu fu = zi;
//调用了子类中的toString方法
System.out.println(fu);
向下转型:父类转换成子类对象
向下转型的对象,必须使用instanceof关键字进行判断,是否可以向下转型
Fu fu = zi;
//调用了子类中的toString方法
System.out.println(fu);
Fu fu1 = new Student("张无忌",25,"武当山职业技术学院光明顶分校","校长");
System.out.println(fu1);
//Fu f = new Fu("张三丰",101);
//boolean flag2 = f instanceof Zi;
//System.out.println(flag2);//false
//ClassCastException
//抛出表示代码尝试将对象转换为不属于实例的子类
//Zi zi1 = (Zi)f;
//System.out.println(zi1);
if(fu1 instanceof Student){
Student student = (Student)fu1;
System.out.println(student);
}
if(fu1 instanceof Zi){
Zi zi1 = (Zi)fu1;
System.out.println(zi1);
}
三种区别:
Zi zi = new Zi();
1、自己定义的方法
2、从父类中继承过来的方法
3、存在重写,则调用重写之后的方法
Fu fu = new Fu();
只能调用父类自己的方法
Fu fu = new Zi();
1、父类自己的方法
2、如果子类重写了父类的方法,可以调用重写之后的方法
二、抽象类:
使用abstract进行修饰的类
特点:
1、不能够直接使用抽象类创建对象,必须通过子类继承并且实现里面的抽象方法,
再通过子类进行创建对象使用
2、抽象类和抽象方法都需要使用abstract进行修饰,抽象方法必须定义在抽象类中
3、只有实现类父类中所有的抽象方法都被实现之后,子类才能创建对象,否则子类也
要变成一个抽象类
4、抽象类,可以没有抽象方法,但是没有抽象方法的抽象类,没有存在的意义
5、抽象类也可以继承抽象类(单继承,只能继承一个直接的抽象了)
6、抽象类中可以有构造函数,但是无法创建对象
什么情况下定义成抽象
1、当类中有抽象方法的时候
有抽象方法的类是不是抽象类?
抽象类中是否必须有抽象方法?
2、当子类继承一个抽象类的时候,不想实现抽象类中的抽象方法,那么就把子类也变成抽象类
3、当一个类实现一个接口的时候,能不能继承抽象类?
当一个类实现一个接口的时候,不能实现所有的抽象方法
抽象类中能不能有普通的方法
4、抽象方法必须放在抽象类中
抽象类中可以没有抽象方法,但是如果没有的话,抽象类就失去了抽象的意义
抽象类语法
public abstract class 类名{
}
抽象方法语法
没有方法体的方法,abstract和方法体之间只能保留一个
public abstract ({参数列表});
特点:
没有方法体,也没有花括号
不能和
private 私有的,子类无法继承,就无法进行抽象方法的实现
static 静态的方法是属于类的
final 修饰的方法不能被重写
关键字一起使用
什么时候把类定义成一个抽象类?
当不知道一个方法具体的方法实现内容的时候定义成一个抽象方法
抽象方法又必须定义在抽象类中
知道所有的子类中都必须拥有一个方法,但是所有的子类的实现方法都
不同,那么父类提供的方法就失去了意义,那么父类中就提供一个抽象的
方法出来,让子类去实现
1、抽象类一定是一个父类么?
是的,因为抽象类是不断抽取出来,一般把共性的一些子类都有的方法
但是不知道子类具体实现的步骤,要把这些定义在父类中完成抽象方
法的定义
2、抽象类中是否可以不定义抽象方法?
可以,但是这个没有抽象方法的抽象类的意义何在?
就是无法创建对象,方法也无法调用
3、abstract不能和什么一起使用
private
static
final
4、抽象方法:只有方法的声明,没有具体实现的方法
抽象类:有抽象方法的类叫抽象类
基本数据类型的封装类型
在java中8个基本数据类型都有与它对应的封装类型
因为基本数据类型不能调用方法和属性
所以要通过封装类型来访问属性和方法
三、装箱拆箱
byte ---> Byte
short ---> Short
int ---> Integer
long ---> Long
float ---> Float
double ---> Double
char ---> Character
boolean ---> Boolean
3、String转基本类型
除了char类型之外,其余的基本数据类型都符合
封装类型 变量名 = new 封装类型("字符串内容为与对应封装类型格式相同的数据");
还可以通过基本数据类型的封装类型中的parseXXX(String s),将字符串转换为对应类型的数据
Byte 类 static byte parseByte(String s)
将字符串参数解析为带符号的十进制byte
Short 类 static short parseShort(String s)
将字符串参数解析为带符号的十进制short
Integer 类 static int parseInt(String s)
将字符串参数解析为带符号的十进制int
Long 类 static long parseLong(String s)
将字符串参数解析为带符号的十进制Long
Float 类 static float parseFloat(String s)
将字符串参数解析为带符号的十进制Float
Double 类 static double parseDouble(String s)
将字符串参数解析为带符号的十进制Double
Boolean 类 static boolean parseBoolean(String s)
将字符串参数解析为带符号的十进制Boolean
char可以使用String类型中的charAt方法将字符取出来
char c = s.charAt(0);
int < ---- > Integer转换
1、构造方法
int a = 10;
Integer x = new Integer(a);
2、通过Integer类中的一个静态方法valueOf方法
Integer z = Integer.valueOf(a);
自动装箱和自动拆箱
自动装箱 int ----------- valueOf(int n) -------> Integer
自动拆箱 Integer --------- intValue() -----------> int
void test3_1(int a, int b, int c){ cout<<*(&c-2);//标记行1}void test3(){ int x,y,z; cin>>x>>y>>z; test3_1(x,y,z);}输入:1 2 3输出:1在标记行1中输出的是1,即是a的值,因为函数调用中,是按实参表从右到左的顺序把参数压入栈中,且地址从高到低所以c的地址-_int a ; test(a*)
一、单页面应用spa就是只有一张web页面的应用,就是加载单个html。优点:页面切换快缺点:首屏时间稍慢,SEO(搜索引擎优化)差 “搜索引擎还读不懂单页面,搜索引擎擅长读的是多页面”二、路由 vue-router基本使用:<router-link to="/home">主页</router-link> <router-view..._袁老师 vue 大师课
2019独角兽企业重金招聘Python工程师标准>>> ..._eclipse安装eclemma插件
题意:给出不同字符个数和子串长度,判断有多少个不同的子串 思路:字符串hash。 用字符串函数+map为什么会超时呢?? 代码:#include #include #include using namespace std;const int N=16000005; //题目给出子串的最大和不超过16Mconst int NUM=257;bool
本手册提供有关 BitBake 工具的信息。这些信息试图尽可能独立于使用 BitBake 的系统,例如 OpenEmbedded 和 Yocto 项目。在某些情况下,手册中会使用构建系统上下文中的场景或示例来帮助理解。对于这些情况,手册清楚地说明了上下文。
Apache Solr的安装和配置方法。
VB入门1.1 知识要点1.VB的特点、安装和启动了解VB面向对象、可视化、事件驱动的特点。2.VB集成开发环境初学者主要掌握菜单栏、工具栏、工具箱窗口、属性窗口、代码窗口、工程资源管理器窗口的使用。3.VB对象的概念,对象的属性、方法和事件三要素4.创建VB应用程序的过程5.掌握窗体、标签、文本框、命令按钮控件的常用属性、方法和事件的使用6.VB应用_无效外部过程
概念UV:独立访客;以cookie为依据,假设一台电脑装有3个不同的浏览器,分别打开同一个页面,将会产生3个UV。PV:访问量;页面每访问或刷新一次,将会产生一个PV。IP:独立IP地址;以公网IP为依据,每个独立IP访问该页面,将会产生一个IP。nginx配置在vhost的conf文件中配置以下信息,请将此conf文件的权限设为777,否则无法自动生成日志文件。#日志格式化log_format ..._nginx 统计 ip,pv,uv,vv
第一步、进行需求分析当客户提出想做一个什么样网站的时候,我们就必须弄清楚客户需求,进行需求分析。有人会问:需求分析,分析什么呢?比如说:客户想要做的网站的类型是什么?风格是什么样的?有没有具体的要求?以及服务器空间的要求。第二步、网站草图重新确定其需求分析,并根据用户需求分析,规划出网站的内容板块草图。俗称:网站草图。第三步、美工设计阶段 然后根据网站草图,由美工制作成效果图。就好比建...
原标题:小白入门也不难,5个必备「自学前端资源网站」快拿走出于工作原因,最近接触了很多想转行的朋友,很多人跃跃欲试却又不敢转到前端这一行,都是因为害怕自己搞不懂、学不会编程,搞不定代码。很明白大家心中的这种顾虑,但既然已经有了这个转行或者学习的心思,不妨先自己看一看学一学。这里给想要尝试的大家整理了5个必备「自学前端资源网站」博客园 一个面向开发者的知识分享社区,一个IT技术人员想为IT技术人员们...
一个springboot项目如何进行模块化改造就是我们自己写的springboot项目如果要分模块以便于与其他模块进行整合该如何进行呢,下面介绍一下首先我们把maven里面的jdk版本指定一下,当然你也可以模块化完成后进行,为了避免不必要的问题这里还是先指定一下,因为我们maven默认的话jdk是1.5的,这里我们找到我们本地maven地址打开setting.xml进行编辑保存退出后,我们打开我们项目的本地地址,然后退出我们idea中的项目这里我们只要保存src和pom.xml其他的删掉,删_springboot让一个包变成一个modules
在做tomcat中session集群时,遇到了一个问题,怎么让session存到缓存中,网上搜索资料,发现了memcached-session-manager(简称:msm)分享地址:https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration上面的文章,讲解了msm怎么配置的全过程。