java整理部分知识点
java方法面向对象
&& & || |
- &&逻辑与 也叫做短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假
- ||逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真
- &按位与,可以进行位运算,boolean在内存中为二进制,所以科已经逻辑运算,但是需要计算全部的都为true才为true
- |按位或,计算出所有的,全为false才为false
数组的写法
- int a[][] = new int[3][3];
- int []a[] = new int[3][3];
- int[][] a= new int[3][3];
变量
- 成员变量、方法
没有用static修饰的变量和方法
- 类变量、方法
用static修饰的的变量和方法
重载(overlord):
- 同名不同参数,可不同返回值的方法,叫重载。只和参数有关。
- 两同三不同:
同一类,同一名。 不同形参类型,不同形参个数,不同顺序。
继承
- 子类只能继承父类非私有成员(方法和属性)(非静态),构造方法需要用super来调用。
- 父类 父 = new 子类 先运行父类构造方法。
- 关系
- 子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。
- 子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。
继承成员变量之间的关系
- 在子类方法中访问一个变量(同名)(就近原则)
- 首先在子类局部范围找。
- 然后在子类成员范围找
- 最后在成类成员范围找
- 还没有就报错(不能是父亲的父亲)
构造方法的关系
- 子类的构造方法都会默认访问父类的空构造方法。
- 子类的会继承父类的数据,可能还会使用父类的数据,所以,子类初始化之前,一定要完成数据的初始化。
- 每个构造方法的第一条语句默认是:super()(必须放在第一行)
成员方法关系
单例模式
这个类在整个项目中只能被创建一次。
super 和 this
this三大作用:
this调用属性、调用方法、利用this表示当前对象。
super三大作用:
super调用父类的属性、父类的调用方法、利用tsuper表示当前父类的对象。
在构造方法中
super,在构造方法中,调用父类的构造方法,且只能在第一行。
This在普通方法中,指的是哪个对象?在构造方法中,指的是?
重写(override):
- 继承的父类,再写一个和父类一样的方法,叫重写,运行时,运行子类的,不运行父类的。
- 方法名,参数类型要与父类的相同,返回值类型和抛出异常与父类相等或者更小。
- 子类方法权限的应比父类更大或者相等。
- 子类重写父类的方法后,调用父类的方法,需要super.方法名。父类的private方法,子类访问不到。
代码块
细节都在注释里面了。
public class CodeBlock {
static {
System.out.println("这是一个CodeBlock static代码块");
}
public static void main(String[] args) {
A a = new A();
A a1 = new A();
{
int x = 5;
System.out.println(x);
}
}
}
class A {
static {
System.out.println("这是一个A static代码块");
}
{
System.out.println("这是一个A 没static代码块");
}
public A() {
System.out.println("这是A的一个构造方法");
}
}
同时导入两个同名包
import 只能导入一个。第二个使用的时,需要连指定路径都指定。
final
- 作用修饰变量、类、方法。不可以被改变
- 特点
- 修饰类 不能被继承
- 方法 不能被重写
- 变量 只能被赋值一次,不能更改
多态
- 概述
- 多态的前提条件
-有继承关系
- 案列
- 成员访问特点
- 好处
- 弊端
- 转型问题
- instanceof
-instanceof运算符的前一个操作数通常是一个引用类型变量 后一个操作数通常是一个类/接口。 它用于判断前面引用变量所指向的具体对象是否是后面这个类,或者后面这个类的子类,或者后面这个类的实现类的一个实例对象。 是则返回ture, 否则返回false。
抽象类
- 概述
- 在Java中,一个没有方法体的方法应该定义为抽象万法,而类中如果有抽象方法,该类必须定义为抽象类。
- 特点
- 抽象类和抽象方法必须用abstract关键字修饰
- 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
- 抽象类不能被实例化
- 具体方法由具体子类实现
- 抽象类的子类要么是抽象类,要么重写(实现)所有的抽象方法
- 成员特点
成员变量可以是变量, 也可以是常量
- 有构造方法,但是不能实例化。它的作用在于子类访问父类数据时做初始化
- 成员方法可以有抽象方法(限定子类必须完成某些动作),也可以有非抽象方法,提高代码复用性
- 问题
- 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
- 关键字共存问题
- private 冲突
- final冲突
- static无意义