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> 从接口的定义中可以发现,此接口使用了泛型 ...
随机推荐
- 常见的Dos命令
dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 注意:rd不能删除非空的文件夹,而且只能用于删除文件夹. cd : 进入指定目录 cd.. : 退回到上一级目 ...
- nGrinder TestRunner http post json
s nGrinder学习笔记 — post请求 https://blog.csdn.net/meyoung01/article/details/50435881 import HTTPClient.H ...
- webserver nginx / https / upstream
s nginx server_name 配置 https://segmentfault.com/q/1010000008426747?_ea=1647456 问题:我的host还没有域名,server ...
- 使用 python -m SimpleHTTPServer 快速搭建http服务
摘要: 在 Linux 服务器上或安装了 Python 的机器上,可以使用 nohup python -m SimpleHTTPServer [port] & 快速搭建一个http服务. 在 ...
- 正则表达式基于JavaScript的入门详解
关于正则表达式,和很多前辈聊起这个知识点时,他们的反馈都比聊其他技术谦逊,而和很多刚入门的程序员讨论时甚至会有觉得你看不起他. 的确,正则表达式从通常的应用来看,的确不难,比如电话,邮箱等验证.语法, ...
- HDU - 6315(2018 Multi-University Training Contest 2) Naive Operations (线段树区间操作)
http://acm.hdu.edu.cn/showproblem.php?pid=6315 题意 a数组初始全为0,b数组为1-n的一个排列.q次操作,一种操作add给a[l...r]加1,另一种操 ...
- 2016vijos 1-1 兔子的字符串(后缀数组 + 二分 + 哈希)
题意: 给出一个字符串,至多将其划分为n部分,每一部分取出字典序最大的子串ci,最小化 最大的ci 先看一个简化版的问题: 给一个串s,再给一个s的子串t,问能否通过将串划分为k个部分,使t成为划分后 ...
- 029、限制容器的block IO(2019-01-24 周四)
参考https://www.cnblogs.com/CloudMan6/p/7016050.html Block IO ,是另一种可以限制容器使用的资源,block IO 指的是磁盘的读写,doc ...
- Bitcoin Core钱包客户端的区块数据搬家指南
最近在饭团(微信中的一个服务号)里教一些朋友学习比特币和区块链技术,为了让大家深刻地理解去中心化网络和钱包等概念,我推荐大家一定要安装经典的Bitcoin Core钱包软件,有些朋友在安装的时候没有留 ...
- 细说java系列之泛型
什么是范型 简言之,范型是Java支持在编译期进行类型检查的机制. 这里面包含2层含义:其一,可以使用范型进行类型检查:其二,在编译期进行类型检查. 那么,什么叫做在编译期进行类型检查?可以在运行时进 ...