Java基础之代码块、final关键字以及方法重写

标签: Java基础 Java基础之方法重写 Java基础之代码块 Java基础之final关键字
12人阅读 评论(0) 收藏 举报
分类:

代码块:

        代码块的概述:
                用 { } 括起来的代码,统称为代码;

  根据其位置以及声明不同:
                分为以下:
        局部代码块:在main( )里面,给变量限定它的生命周期;
        构造代码块:在一个类中的成员位置中,用 { } 括起来;

作用:可以将多个构造方法中的相同的代码放到构造代码块中,对对象进行初始化;
                                  在每次执行构造方法之前,先执行构造代码块;
                静态代码块:在一个类的成员位置,也是用 { } 包起来,但是他被static修饰;

                        作用:一般情况 它的作用给类进行初始化;

        思考:
                构造代码块,构造方法,静态代码的优先级?

                        答案:静态代码块 > 构造代码块 > 构造方法

        注意:
                静态代码:只能执行一次;

                构造代码块在每次执行构造方法之前都会被执行;

        举例:

//定义一个Code类
class Code{
	
	//静态代码块
	static{
		int x = 1000 ;
		System.out.println(x);
	}
	
	//成员位置
	{
		int x = 100 ;
		System.out.println(x);
	}
	//构造方法
	public Code() {
		System.out.println("code");
	}
	
	//构造代码块
	{
		int y = 200 ;
		System.out.println(y);
	}
	
	//有参构造
	public Code(int a) {
		System.out.println("code");
	}
	
	//静态代码块
	static {
		int y = 2000 ;
		System.out.println(y);
	}
}
public class CodeDemo {
        public static void main(String[] args) {
        //局部代码块
        {
                int x = 10 ;
                System.out.println(x);
        }
        //不能访问局部代码块中的这个变量x
        System.out.println(x);
}

        代码块例题:

代码解释:
    //首先先看StudentDemo类,先执行static静态代码块,之后进入main函数,执行输出语句;
    //之后给变量s1分配Student分配单元,首先执行静态代码块,在执行构造代码块,之后再执行构造方法,程序执行完返回main函数;
    //顺序执行函数体,给变量s2分配Student单元,但是静态代码块只能执行一次,所以跳过静态代码块,执行构造代码块,在执行构造方法;
    //返回函数,结束程序;



方法重写:
        由于子类继承父类的时候,提供一摸一样的方法声明,然后会将父类该方法覆盖掉(重写,复写);

        有时候(具体的需求),不需要子类重写父类的功能,针对这种情况,Java提供了一个关键字:final   最终的,终态的意思;

        举例:

class Fu{
	public void show() {
		System.out.println("这是一个绝密文件,任何多不能更改...");
	}
}

//Zi类
class  Zi extends Fu{
	public void show() {
		System.out.println("这是一堆垃圾....");
	}
}
//测试类
public class ZiDemo {

	public static void main(String[] args) {
		
		Zi zi =new Zi() ;
		zi.show();
	}
}

//输出结果为:  这是一堆垃圾....   
//也可以理解为:就近原则;
//如果父类的public void show()  ==>  public final void show()  ==>  则在子类不能重写被final修饰的Fu类的方法;


final关键字:表示最终,终态(不能被更改的);

        它可以修饰类,那么该类不能继承;
        它可以修饰成员方法,成员方法不能被重写;

   它可以修饰变量,此时这个变量是一个常量;

                举例:

                        自定义常量(final修饰的):    pubic final int num = 100 ;

        final不仅可以修饰基本数据类型,还可以引用类型;
   如果final修饰的是一个基本数据类型:基本数据类型的值不能再改变了;
   如果final习俗的是一个引用类型数据:引用类型的地址值不能再改变了,但是堆内存中的成员变量的值可以变得;
  
        final的初始化时机:
   1)被final只能被赋值一次(final int a = 10 )
   final int a ;

   //在使用之前进行初始化,赋值(在构造方法之前赋值) (非静态的...)

        举例:

class Student{
	int age = 20 ;
}
public class FinalTest {

	public static void main(String[] args) {
		//定一个变量
		int x = 10 ;
		x = 100 ;
		System.out.println(x);
		System.out.println("-----------------");
		final int y = 20 ;
		//y = 200 ;// 不能被赋值了,变量y此时常量...
		System.out.println("-----------------");
		
		//创建Student类对象
		Student s = new Student() ;
		s.age = 56 ;
		System.out.println(s.age);
		System.out.println("-----------------");
		//另一种情况:
		final Student ss = new Student() ;  //开辟一个新的Student对象,堆内存里的值是可以改变的,但是空间的地址是不能改变的;
		ss.age = 70 ;
		System.out.println(ss.age);   
		
		
		//给堆内存开辟一个新的空间,系统会报错,新的Student对象,空间地址是不能改变的;
//		ss = new Student() ;      //the final local variable ss cannot be assigned
	}
}



查看评论

java 的重写和final关键字

1、方法重写:    子类根据需求对从父类继承来的方法进行改写,是多态机制的前奏,重写方法必须和被重写的方法的方法名、参数列表、返回值相同。    重写方法不能使用比被重写的方法更为严格的访问权限。 ...
  • u010068160
  • u010068160
  • 2018-03-04 22:51:32
  • 18

final关键字特点

final可以修饰类,该类不能被继承。 final可以修饰方法,该方法不能被重写。(覆盖,复写) final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。面试题:final修饰局部变量...
  • Jmiew123
  • Jmiew123
  • 2017-03-10 15:55:29
  • 289

08-java代码块,继承,方法重写,final关键字

代码块的分类和概述代码块概述: java中用{}括起来的代码被称为代码块 代码块分类 根据其位置和声明的不同,可分为局部代码块,构造代码块,静态代码块,同步代码块 class Demo1_Code {...
  • u012809709
  • u012809709
  • 2017-04-15 23:03:47
  • 93

JAVA入门基础测试题

java基础题
  • luo10086csdn
  • luo10086csdn
  • 2017-06-22 11:43:24
  • 450

深入理解final关键字

在Java中,final关键字可以用来修饰数据、方法、参数、类,下面我们来了解final的关键字的用法。基本用法final 数据对于基本类型,final使数值恒定不变;而对用对象引用,final使引用...
  • IO_Field
  • IO_Field
  • 2016-10-16 15:12:27
  • 2475

java编程基础的例子

  • 2010年02月22日 12:01
  • 2KB
  • 下载

Java - Java中的final关键字有哪些用法?

(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能赋值一次且赋值以后值不能被修改(常量)。...
  • chimomo
  • chimomo
  • 2017-10-26 11:46:21
  • 569

java final关键字

  • 2011年12月18日 11:45
  • 34KB
  • 下载

java中的final关键字所起的作用

final的作用随着所修饰的类型而不同        1、final修饰类中的属性或者变量               无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能...
  • Kinger0
  • Kinger0
  • 2015-08-22 16:13:39
  • 739

Java基础 - 代码块,继承,方法重写,final

Java基础 - 代码块,继承,方法重写,final
  • mythmayor
  • mythmayor
  • 2017-05-25 17:38:01
  • 379
    个人资料
    持之以恒
    等级:
    访问量: 210
    积分: 331
    排名: 23万+
    文章分类
    文章存档