天天看点

java代码块,继承,final关键字简述

代码块分为4种
           

1.局部代码块: 在方法中,限定了局部变量的作用范围

2.构造代码块 : 类中方法外,顾名思义,就是实例对象时调用,优先于构造函数调用

3.静态代码块:使用static来修饰类中方法外,与构造代码块不同,静态代码块是在类加载的时候就加载到静态区中,优先创建与对象,而且只调用一次.应用场景:驱动加载

4.同步代码块,多线程中才用到,新手先知道有这概念即可

下面有段代码,来好好建议你的掌握程度:

class Student {
			static {
				System.out.println("Student 静态代码块");
			}
			
			{
				System.out.println("Student 构造代码块");
			}
			
			public Student() {
				System.out.println("Student 构造方法");
			}
		}
	
		class Demo2_Student {
			static {
				System.out.println("Demo2_Student静态代码块");
			}
			
			public static void main(String[] args) {
				System.out.println("我是main方法");
				
				Student s1 = new Student();
				Student s2 = new Student();
			}
		}
           

输出:依次为

1.System.out.println("Demo2_Student静态代码块")

2.System.out.println("我是main方法");

3.System.out.println("Student 静态代码块");

4.System.out.println("Student 构造代码块");

5.System.out.println("Student 构造方法");

6.System.out.println("Student 构造代码块");

7.System.out.println("Student 构造方法");

内存分析图

java代码块,继承,final关键字简述

在结合上面的静态语句块和构造语句块,就可以的到上面依次打印的结果.

继承:在封装之后,java面向对象的三大特性之二,(最后一个是多态,多态的前提必须有继承,继承中的重写(Override),以及父类引用指向子类对象),

把类中相同的代码 抽取出来 写成一个类,最为一个父类,给子类继承使用

继承的特点:减少代码的重复编写量

继承写法:

class 子类 extends 父类{

} (这里的父类不可以是final 修饰的类,下面会讲到final 修饰符)

在Java 中只有单继承,如何实现多继承的功能呢?

就要使用JAVA 所允许的多接口,实现多继承的效果

所有的类都有一个基类(Object 类)

继承中的构造方法,是不能被继承的

class Father{
	String name;
	public Father() {
		this("ssss");
		System.out.println("无参构造方法");
	}
	public Father(String name) {
		this.name = name;
		System.out.println("有参构造方法"+name);
	}
	private void sayhi() {
		System.out.println(name);
	}
}
class Son extends Father{
	public Son() {
		super();//没写,系统就自己加上
	}
	public Son(String name) {
		super();//没写,系统就自己加上
		this.name = name;
		System.out.println("子类有参构造");
	}
}
           

这里要注意到,子类Son  的构造方法虽然没有继承父类构造方法,但是他的构造方法中,会自己调用父类的无参构造方法.即使不写,系统也会自动加上.

继承时,如果子类和父类有相同名字的成员变量, 用this.成员变量  就是调用当前子类的属性,如果子类没有,系统会自动去父类中寻找.

super.  在类中代表的是父类对象,super.调用父类的属性.

this();  调用本类的构造方法

super(); 调用父类的构造方法

final 修饰符:

1.修饰类(不能被继承) 

2.修饰变量(不能被修改)  相当于常量(不能被修改的量) 命名规则 字母全部大写 ,多单词下划线分开

final 变量有两种赋值方式:第一个,直接在类声明成员变量时给初值 第二个,在构造方法中赋值

3.修饰方法(不能被重写)