1.定义
float f1 = 2.3F;
long l1 = 2344234L;
2,从键盘输入
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
3.匿名对象:创建的对象,没有显示的付给一个变量名,即为匿名对象。
class phone{
public void play(){}
}
new phone.play();
4.多态 ==== 向上转型 :多态是运行时行为
Class Animal{
int count = 10;
public void display(){
System.out.printfln("bbbbbbb");
}
}
Class Dog extends Animal{
int count = 20;
public void display(){
System.out.printfln("aaaaa");
}
}
Dog a = new Dog();
System.out.printfln(a.count); //20
Animal b = a;
System.out.printfln(a.count); //10
b.display();
输出为aaaaa;
一句话理解:方法可重写,属性不重写;
a.若子类重写了父类的方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中:编译看左边,运行看右边
b.对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量。:编译运行都看左边
5.JAVA函数允许不指定参数数量
public void add(int a , int... arr){
System.out.println("!!!!!!!");
}
6.重写
public class Test{
Base b = new Sub();
b.add(1,2,3);
}
class Base{
public void add(int a , int... arr){
System.out.println("!!!!!!!");
}
}
class Sub extends Base{
public void add(int a , int[] arr){
System.out.println("-=======");
}
public void add(int a , int b , int c){
System.out.println("+++++++++");
}
}
子类和父类函数add的参数虽然不同,但是编译器认为int... a 和int[] a 相同,所以属于重写。
运行结果为-======= 不是+++++++ !!
因为编译是编译Base类,而Sub重写了add函数,所以输出-============= ;
7.