拓展:多态、代码块与变量

1 、向上造型与向下造型

	在Java中,继承和多态都是三大特性之一,通过extends关键字,使派生类使用了超类的功能。然超类不满足派生类的需求时,派生类可以重写超类的方法。而多态使其程序更加的灵活和规范化。
	因此,在这样两种方式下就存在两种转型方式:向上转型和向下转型。
1.1向上造型就是多态,为了标准化,向超类类看起:
向上转型:超类的引用指向派生类的对象!==>超类名 自定义名 = new 派生类名();
说明:向上转型时,派生类对象理解为超类对象,并且只能调用超类的功能,如果派生类重写了超类的功能,则根据这个引用指向调用派生类的对象的重写方法。简单的理解就是使用超类的对象,执行派生类的方法体!
1.2向下造型 ,为了使用派生类特有的扩展的功能(很少用)
向下转型:派生类的引用执行超类对象,过程中采用强制转型
==>超类名 自定义名 = new 派生类名();//此时自定义名是超类类型
====>派生类名 自定义名2 = (派生类名)自定义名;//此时,把超类型的转型为派生类型的
		其实就是相当于创建了派生类的对象,可以用超类的也可以用派生类的。
说明:向下转型时,是为了方便使用子类的特殊方法,也就是说当子类方法做了功能拓展,就可以直接使用子类功能。

2 、 静态代码块,构造代码块,局部代码块

三个代码块的执行顺序:静态代码====>构造代码块====>构造方法代码块===>局部代码块

静态代码块:在类加载时就加载,并且只被加载一次,一般用于项目的初始化;
构造代码块:在创建对象时会自动调用,每次创建对象都会被调用;
构造方法代码块:构造方法里面的代码块;
局部代码块:方法里的代码块。
public class text03 {
	public static void main(String[] args) {
		new Text99().Text1();
	}
}
class Text99{
	{
		System.out.println("这是一个构造代码块1!");
	}
	static {
		System.out.println("这是**静态**代码块1!");
	}
	public Text99() {
		System.out.println("这是*构造方法*代码块11!");
	}
	public void Text1() {
		System.out.println("这是一个局部代码块!");
	}
}
《============================= 结果展示 =======================》
这是**静态**代码块1!
这是一个构造代码块1!
这是*构造方法*代码块11!
这是一个局部代码块!

3 、 静态变量和实例变量的区别

在语法定义上的区别:
	静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:
	——实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
	——静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。
*****简单是理解就是,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值