J SE基础笔记2

多态:
多态是Java执行期的行为,而不是编译期的行为。


父类引用指向子类的对象,该引用不能执行子类特有的方法(引用只能执行父类中存在的方法,但执行的方法体有可能是被子类所重写的方法体)。要执行子类特有的方法,必须将该引用向下转型成子类引用类型。


late binding例子:
public class LateBindingTest{
	public static void main(String[] args){
		A a = null;
		if(args[0].equals("1")){
			a = new B();
		}
		else{
			a = new C();
		}
		
		a.print();
	}
}


interface A{
	public void print();
}


class B implements A{
	public void print(){
		System.out.println("B");
	}
}


class C implements A{
	public void print(){
		System.out.println("C");
	}
}



抽象类、抽象方法和接口:
抽象方法只能定义在抽象类中,如果某个类包含了一个抽象方法,那么该类必须是抽象类。抽象类中可以存在具体的方法。抽象类无法被实例化。


子类继承了一个抽象父类,如果该子类无法实现所有父类的抽象方法(重写成具体方法),那么该子类就必须定义成抽象类。


接口中所有的方法都是抽象的,定义方法时,可以省略abstract关键字。接口可以看成一个特殊的抽象类。


一个类可以实现多个接口,但是一个类只能继承一个父类(Java是单继承的)。


一个类可以继承一个类,同时去实现多个接口。


静态变量和方法:
静态成员变量和静态方法都可以通过类来使用,而不必通过对象。


子类可以继承父类的静态方法,但是不能重写静态方法。子类中也可以有和父类相同的静态方法,这时,从父类继承下来的静态方法将被隐藏。


引用调用实例方法时,执行的方法是引用所指向的对象的方法。而引用调用静态方法时,执行的方法是改引用的类的静态方法。

静态方法不能访问非静态成员变量,只能访问静态成员变量。而非静态的方法能访问静态的成员变量。

不能在静态方法中用this.关键字。

final(终态):
final可以修饰类、方法和变量。

final修饰类时,表示该类不能被继承。

final修饰方法时,表示该方法不能被重写(override)。

final修饰变量时,表示该变量的值不能被修改。 注意:当变量为引用类型时,只要变量指向的对象不变(引用类型,它的值不变,意为着指向同一个对象),对象的值可以被改变。

声明final变量时,必须在声明时就赋值。
在类中生命final变量时,可以在声明时就赋值,也可以在构造方法中赋值。但两者不能同时出现。如果用构造方法给final变量赋值,那么所有的构造方法都必须为final赋值。

静态代码块:
当Java虚拟机加载类(最顶层的类先加载)时,类中的静态代码块执行。因此静态代码块可以做一些类加载的初始化工作。静态代码块只会被执行一次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值