char a = 10
这样的写法是合法的
构造函数(构造器)也算是方法,其没有返回值,且返回值不需要声明void
int[] arr = {1,2,3}
是合法的,int[] arr = new int[3]{1,2,3}
是不合法的
java允许多继承,但类只能单一继承,类的单继承避免了菱形继承的危险
java中类型自动转换 byte,short,char->int->long->float->double
6.super()在子构造器中默认存在,且super(…)如果显示调用的话,只能在构造器的第一行
7.i =i++
这种情况下,i的值不会改变
8.类的修饰符(非内部类)可以有public,abstract,final
9.接口中定义变量默认是public static final
修饰,方法默认是public abstract
修饰
10.抽象类是有构造器的,但抽象类不能直接创建对象,抽象类构造器的唯一作用就是给子类调用
11.final成员变量必须要被初始化,且不能改变。初始化的方法有三种,一种是创建的时候中赋值,一种是代码块中赋值,一种是构造器中赋值
12.实例调用静态方法实际上是找到实例的类引用,然后再根据类找到其静态方法。所以如果把实例设置成null,依旧可以调用该方法
13.子类实例可以自动转为父类实例,但父类实例转为子类实例需要强转
14.多态只是针对方法的,对于变量,还是根据定义类的属性进行选择,例如;
class Father1{
public int a;
public Father1(){
a = 3;
}
public void add(){
a += 5;
}
}
class Son1 extends Father1{
public int a;
public Son1(){
a = 8;
}
@Override
public void add() {
this.a += 5;
}
}
public class ExtendsStudy {
public static void main(String[] args) {
Father1 son1 = new Son1();
son1.add();
System.out.println(son1.a);
}
}
// 输出3
15.方法的重载中,根据参数的诶性进行匹配,如果多个方法都能匹配,选择子类的那个。
原文:https://www.cnblogs.com/yinjiacheng/p/14783165.html