Java基础5-接口
昨日内容回顾
jvm参数设置
- -Xmx //设置最大堆大小
java -Xmx512m Classname - -Xms //设置初始堆大小
java -Xms24m Classname - -Xss //设置栈空间的大小
java -Xss2m ClassName
- -Xmx //设置最大堆大小
class
成员变量,属性
成员函数,方法构造函数
和类同名
没有返回值javabean规范
私有属性
公有getter/setter代码块
局部代码块
在函数内部定义{},
不能使用static修饰。构造代码块
也是类的成员,和成员变量和成员函数同级。
构造对象时,先调用构造代码块,然后是构造函数。静态代码块
构造代码块 + static修饰符。
静态代码块在类加载的时候执行,而且只执行一次。
手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。
Class.forName(String,boolean initialize,ClassLoader)可以控制加载时是否初始化。
继承
- 将共性的内容进行提取。
- 很好的进行了重用。
- 使用的关键字是extends
class B extends A {....} - java中不能多重继承,只能单重继承。
- this:指向对象自身的引用。
this(...)表示的是调用当前类的构造函数.只能用在第一行。默认this() - super : 超类,作用方面类似于this
super(...) : 访问超类的构造函数,只能用在第一行。默认是super() - 子类重写的方法权限 > 父类的方法权限.(权限可放大,可发扬光大,不能缩小,不能私有化)
作业讲解
将按位运算操作,尤其是左移和右移(有无符号)整理到自己的博客中,重点说明清晰负数的运算过程。
//1.有符号左移>>,补符号位
//127 >> 2
//0111 1111 >> 2 == 0001 1111 == 31
System.out.println(127>>2); //-128 >> 2
//1000 0000 >> 2 == 1110 0000 == 32
System.out.println(-128>>2); //2.无符号左移>>>,补0
//127 >>> 2
//0111 1111 >>> 2 == 0001 1111 == 31
System.out.println(127>>>2); //-128 >>> 2
//11...11 1000 0000 >>> 2 == 0011 11...11 1110 0000 == 1073741792
System.out.println(-128>>>2); //3.右移<<,补0
//127 << 2
//0111 1111 << 2 == 0...0 0001 1111 1100 == 127*4 == 508
System.out.println(127<<2); //-128 << 2
//11...11 1000 0000 << 2 == 11...10 0000 0000 == -128* 4 = -512
System.out.println(-128<<2);
byte数到十六进制字符串表现形式程序设计原理和实现方式整理到博客中。
答:byte数在计算机中以8位二进制数进行存储,十六进制以0x开头,每位数的范围为09,AF;注意到4位二进制数可以表示一位十六进制数,一个byte数可以由两位十六进制数表示;因此,先将byte数的低四位和高四位分别取出,再用十六进制数表示。byte b = 127;
char[] hexArr= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//取出低四位
int low = b&0xf //取出高四位
int high = (b>>4)&0xf
System.out.println(b+"=0x"+c[high]+c[low]);
定义函数,计算一位整型数组所有元素的和。
int sum(int[] arr){
int sum = 0;
for(int i=0;i<arr.length;i++){
sum = sum + arr[i];
}
return sum;
}
面向对象
OOP:Oriented object program
- 类,现实事物的软件抽象
- 对象,切实存在的个体
- 类的成员
成员变量,成员函数,构造函数(和类同名,没有返回值,可以重载),构造代码块,静态代码块
方法的覆盖操作
静态覆盖静态,非静态覆盖非静态,静态性约束保持一致
覆盖方法时,权限可以放大,但不可以缩小
final
终态的
修饰类,表示类不能被继承。
修饰方法,表示方法不能被重写。
私有方法可以加final,没有意义,编译通过。(不可能发生)修饰变量,只能被赋值一次。如果不赋值,编译通不过。
内部类
定义在类内部的类称为内部类
内部类可以在类成员位置上
编译时产生的类:外部类$内部类,例如Benz$Engine.class内部类还可以在方法内定义
Benz$1Engine.class内部类访问局部变量时,不能对局部变量进行重新赋值。java8中不需要用final修饰
abstract
没有方法体的方法。必须使用abstract修饰。
抽象方法只能存在于抽象类中。
抽象类也必须要使用abstract修饰。
抽象类不可以实例化,但一定有构造函数。
abstract + static 是非法的修饰符组合。
abstract + final 是非法的修饰符组合。
abstract + private是非法的修饰符组合。面向接口编程,降低耦合度。
开发原则:高内聚,低耦合。
接口
interface:降低耦合度,所有方法都是抽象的
案例:白富美,高富帅
练习
定义Car类为抽象类
class Car{
speed
run() //具体的方法,汽车跑动前先鸣笛。
speak() //鸣笛,抽象
}
Car的子类
class BMW extends Car{
...
} class Benz extends Car{
...
}
作业
文字阐述静态代码块的作用。
构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?
类加载时,是否一定会执行静态代码块?如何手动控制类加载?
定义类Person,Man,Woman形成继承关系。
什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?
抽象修饰符有哪些非法组合?并给出合理的解释?
super和this作用以及用法以及注意事项?
定义接口
- IWhite
- IRich
- IBeanti
- 定义类,实现以上三个接口.(WomenStar)
- 定义土豪类(EarchRicher.marring(...))
Java基础5-接口的更多相关文章
- Java基础十--接口
Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...
- Java基础-面向接口(interface)编程
Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...
- 【Java基础】接口和抽象类之间的对比
Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...
- JAVA基础之接口
接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...
- Java基础10 接口的继承与抽象类
链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Java基础10 接口的继承与抽象类(转载)
接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: interface Cup{ ...
- java基础(11):接口、多态
1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...
- Java基础之接口与抽象类及多态、内部类
final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...
- java基础之接口(抽象类与接口的区别)
概述 猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯的,这应该属于经过特殊的培训训练出来的,对不.所以,这些额外的动作定义到动物类中就不合适,也不适合直 ...
- Java基础——collection接口
一.Collection接口的定义 public interfaceCollection<E>extends iterable<E> 从接口的定义中可以发现,此接口使用了泛型 ...
随机推荐
- jmeter奇淫妙计之遍历sql多列结果集
foreach控制器加${__V()}函数和${__counter(TRUE,)}函数 处理sql多列结果的遍历真的是绝配啊,之前一直用循环控制器+count函数,或者while控制器加count函数 ...
- Openldap命令详解
Openldap 客户端常用管理命令 1.ldapadd -x: 简答认证方式 -W: 不需要在命令上写密码 ldapapp -x -D "cn=Manager,dc=suixingpay, ...
- TranslateMessage消息翻译和DispatchMessage消息分发
TranslateMessage函数将虚拟键消息转换成字符消息.比如: 消息WM_KEYDOWN和WM_KEYUP组合产生一个WM_CHAR或WM_DEADCHAR消息. 消息WM_SYSKEYDOW ...
- vue实现筛选功能,文字选中变色
<template> <Poptip trigger="hover" title="Title" content="content& ...
- Ubuntu 下使用 putty并通过 ch340 usb 串口线进行调试
安装putty sudo apt-get install putty -y 插入usb转串口线 由于linux下没有Windos类似的设备管理器,所以我们可以通过其他方法获取对应的串口号 可以在插拔之 ...
- shop++改造之Filter类
基于shop++源码进行商城改造.本来想大展手脚,结果一入手.发觉瞬间淹没了我的才华,sql语句也得贼溜没啥用. 不得不说这个商城源码价值很高,封装的很精屁. 下面是我第一天入手的坑. 数据库建好了表 ...
- ` ` ` ` ` ` ` `
字符实体 说明 这是我们使用最多的空格,也就是按下space键产生的空格.在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个).要使用html实体表示才可累加. 占据的宽度正好 ...
- web.xml之<context-param>与<init-param>的区别与作用【转】
引用自-->http://www.cnblogs.com/hzj-/articles/1689836.html <context-param>的作用:web.xml的配置中<c ...
- Hadoop生态组件的WebUI地址
================================Impala 相关================================ Impala的常用端口: jdbc/ODBC 端口: ...
- zookeeper的作用
1.管理(存储和读取)程序提交的状态数据 2.为用户程序提供数据节点监听服务