abstract注意事项。abstract不能修饰:private,static,final这些方法。
abstract抽象要重写----》用来子类继承实现方法的
1、abstract不能用来修饰属性、构造器等
构造器不能被重写,只能重载
2、abstract不能修饰:private,static,final这些方法。
原因是
1 private是私有的,不利于abstract修饰的类进行重写—》超类与之类
2 static 方法是类方法,它是不允许子类重写
abstract是抽象的,相当于给你一张纸或者一个空包裹,让你去加东西,子类实现它的方法;
而static是静态方法,相当于一面墙,大家共享的,都可以在上面写东西,写的东西动态改变的,它不需要子类去重写override
3 final方法不能被重写,所有也不能被abstract修饰。
final《------》abstract
相反的,前者不能重写,后者可以重写
60.final是什么?为什么要用final?final、finally、finalize()区别?
1、final是什么
final初始化的值不可改变的final修饰的对象是不可以重新指向新的一个对象的,但是自身对象的内容可以进行改变。
2、final特点
不能被继承
初始化的值不变变量是一个常量,只能被赋值一次
3、为什么要用final
1 设计
设计过程中:方法行为不会被继承,不会别覆盖,即方法锁定(术语)
2 效率禁止覆盖时,提高编译器和JVM的工作效率。对目前final起到其他的优化作用,存争议。
4、final、finally、finalize()区别
finally:try…catch 最终操作finalize():清理内存垃圾用的(在垃圾收集器将对象从内存中清除出去之前做必要的清理工作)
57.属性赋值的先后顺序
1.默认初始化
2.显示初始化/代码块中初始化
3.构造器中初始化4.通过“对象.属性”或“对象.方法”井下赋值
public class Attributeinit { public static void main(String[] args) { IAttribute iAttribute = new IAttribute(); System.out.println(iAttribute.a); }}class IAttribute{ IAttribute(){ a = 4; } int a = 2; { a = 3; }}
结果
4
静态变量与实例变量的区别
1、静态变量static关键字修饰,为共享的,别人调用完后值是改变的。
2、实例变量也称非静态变量,不是共享的,每个对象都有一套实例变量,自己用自己的,不受别人对象的影响。
例子:
静态变量:腾讯文档在开放共享的时候,里面的数据其实就是静态变量,访问的用户可以对改文档的数据进行修改,动态修改,多人协作!实例变量:CSDN博客(管理员除外)里面自己写的文章,用户只能自己修改自己的文章,不能修改别人的文章!
instanceof关键字的使用
1、向上转型
—》子类-》父类
—》多态
2、向下转型
—》父类-》子类
—》instanceof关键字
3、instanceof关键字java中,instanceof运算符的前一个操作符是一个引用变量,后一个操作数通常是一个类(可以是接口),用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是返回true,否则返回false。
if—》对象a是否是类A的实例
—》yes—trueno—false
4、为什么要用为了避免在向下转型出现ClassCastExcepiton异常
super定义?使用?
1、定义
父类的,超类的
2、使用(子类的方法或构造器)
super.属性
super.方法子类、父类同名属性或方法时,我们想在子类中声明父类的属性 或 想在子类中调用父类的方法
线性查找代码实现
线性查找代码实现
if else…boolean…
package com.mb;public class Linear { public static void main(String[] args) { int a = 76; int[] arr = new int[]{1,2,3,4,6,7,78,987,76,2}; boolean isSearch = true; for (int i = 0; i < arr.length; i++){ if(a == arr[i]){ System.out.println(a + " is in arr[" + i +“]”); isSearch = false; break; } } if (isSearch){ System.out.println(a + " is not in arr"); } }}
结果
76 is in arr[8]
数组的理解?数组的使用?
1、什么是数组
同一种类型数据的集合。a[3]—>a[0] a[1] a[2]
2、数组的特点
1 数组是有序排列的
2 数组长度确定后不能做修改
3 数组是连续的内存空间4 —》基本数据类型、引用数据类型
3、为什么要用数组方便管理,提高开发效率,简化代码量
4、数组定义形式
一维数组
1 一般:String[] a = new String[3];
2 其他:String a[] = new String[3];
3 more: int[] a;
a = new int[]{1,2,3,23,34,34};4 可以是 int[] a = new int[]{1,2,3,23,34,34};
不能是int[] a = new int[6]{1,2,3,23,34,34};5 int[] a2 = {2,3,4,5,6,6};
随机产生一个数0-9999?静态与非静态属性及方法?
Random()随机数生成器
Random n = new Random();
int nextId = n.nextInt(10000);
System.out.println(nextId);