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> 从接口的定义中可以发现,此接口使用了泛型 ...
随机推荐
- 谈.Net委托与线程——创建无阻塞的异步调用(二)
了解IAsyncResult 现在我们已经了解,EndInvoke可以给我们提供传出参数与更新后的ref参数:也可以向我们导出异步函数中的异常信息.例如,我们使用BeginInvoke调用了异步函数S ...
- ADB interface驱动
原文地址:https://blog.csdn.net/weixin_42108952/article/details/80153402
- 使用CMD 命令创建指定大小的文件
在做资源更新的时候要做 磁盘空间不足的测试,于是想创建一个文件塞满硬盘,搜索到可以用命令来创建. fsutil file createnew null.zip 524288000
- Docker: 安装配置入门[二]
一.安装配置启动 1.环境 [root@docker1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@d ...
- 免费开源.net的pdf操作控件PdfiumViewer
最终我找到了pdffiumViewer.开源免费的.net组件. 亲测,可以按第一个下载地址,改写开发.如果对源码感兴趣,可以上GitHub网站 效果图: 1.源代码下载地址: https://do ...
- ruby-----render讲解
Ruby rails页面跳转代码如下: 1.render(:text => string) 2.render(:inline => string, [:type => "r ...
- Java技能
1.思维导图 Java知识思维导图 2 3.Java理解 深入理解Java:注解(Annotation)自定义注解入门 4.JAVA数据类型 基本数据类型 布尔类型:boolean 数值类型: 定点类 ...
- vue中nextTick
vue中nextTick可以拿到更新后的DOM元素 如果在mounted下不能准确拿到DOM元素,可以使用nextTick 在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue ...
- java.lang.String & java.lang.StringBuilder
java.lang.String & java.lang.StringBuilder String 成员方法 作用 public charAr(int index) 返回给定位置的代码单元 p ...
- ubuntu没有/usr/include/sys目录
实际上不是没有sys目录,只是系统给换路径了 32位系统:/usr/incude/i386-linux-gnu/sys 64位系统:/usr/include/x86_64-linux-gnu/sys/ ...