-
###代码块
**局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)
代码块的格式:要使用{}括起来
常见代码块的应用
-
a:局部代码块
- 在方法中出现;限定变量生命周期,及早释放,提高内存利用率
-
b:构造代码块 (初始化块)
- 在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
-
c:静态代码块
-
在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
-
一般用于加载驱动
/*代码块的例题*/class Test { public static void main(String[] args) { { System.out.println("main中局部代码块"); } Code c=new Code(); c.testOne(); c.testTwo("zhangsan",10); }}class Code { private String name; private int age; public void testOne(){ System.out.println("无参函数"); { System.out.println("testOne中局部代码块"); } } public void testTwo(String name,int age) { this.name=name; this.age=age; System.out.println("有参函数"); { System.out.println("testTwo中局部代码块"); } } { System.out.println("构造代码块"); } static { System.out.println("静态代码块"); }}复制代码
main中局部代码块
静态代码块
构造代码块
无参函数
testOne中局部代码块
testTwo中局部代码块
有参函数
###编译结果:
testTwo中局部代码块wanghui@wanghui-Inspiron-3543:~/练习
java Test main中局部代码块 静态代码块 构造代码块 无参函数 testOne中局部代码块 有参函数 testTwo中局部代码块
从该题中知道了静态代码块的优先级要大于构造代码块,且静态代码块只运行一次
###继承extends
爷爷...爸爸...儿子的关系
#面向对象(Java中类的继承特点)
- A:Java中类的继承特点
- a:Java只支持单继承,不支持多继承。(一个儿子不能有两个以上的个爹)
- 有些语言是支持多继承,格式:extends 类1,类2,...
- b:Java支持多层继承(继承体系)
- a:Java只支持单继承,不支持多继承。(一个儿子不能有两个以上的个爹)
- B:案例演示
- Java中类的继承特点
- 如果想用这个体系的所有功能用最底层的类创建对象
- 如果想看这个体系的共性功能,看最顶层的类
- Java中类的继承特点
###08.06_面向对象(继承的注意事项和什么时候使用继承)(掌握)
A:继承的注意事项
a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
b:子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法。
c:不要为了部分功能而去继承
this与super的区别
this:代表当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
/*创建一个extends的例题,让子继承父*/class Demo_Extends { public static void main(String[] args){ Son s=new Son(); s.speak("zhangsan",10); }}class Father { private String name; //私有成员变量 private int age; //私有成员变量 public void speak(String name,int age) { //有参函数 this.name=name; this.age=age; System.out.println("name:"+name+" age:"+age+" xixi"); { System.out.println("这是一个father构造代码块"); } }}class Son extends Father { //子继承父 { System.out.println("这是一个son构造代码块"); } static{ System.out.println("这是一个静态代码块"); }}复制代码
这是一个son构造代码块
这是一个father构造代码块
name:zhangsan age:10 xixi
###编译结果:
wanghui@wanghui-Inspiron-3543:~/练习
java Demo_Extends 这是一个静态代码块 这是一个son构造代码块 name:zhangsan age:10 xixi 这是一个father构造代码块
此处顺序没搞太明白
- A:Java中类的继承特点
-
面向对象(方法重写概述及其应用)
A:什么是方法重写
重写:子父类出现了一模一样的方法(注意:返回值类型可以是子父类,这个我们学完面向对象讲)
B:方法重写的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。这样,即沿袭了父类的功能,又定义了子类特有的内容。
/* 电脑有显示功能,有qq聊天功能,如今想加一个微信聊天功能,使用重写实现*/class Computer { public static void main(String[] args) { NowFunction now=new NowFunction(); now.show(); now.chat(); }}class Function { public void show() { //显示的方法 System.out.println("我能显示"); } public void chat() { //聊天的方法 System.out.println("我能用qq聊天"); }}class NowFunction extends Function { //继承并重写方法chat public void chat() { super.chat(); System.out.println("我能用微信聊天"); }}复制代码
预测显示结果:
我能显示
我能用qq聊天
我能用微信聊天
###编译结果:
wanghui@wanghui-Inspiron-3543:~/练习 java Computer 我能显示 我能用qq聊天 我能用微信聊天
面向对象(final关键字修饰类,方法以及变量的特点)(掌握)
A:final概述
B:final修饰特点
- 修饰类,类不能被继承
- 修饰变量,变量就变成了常量,只能被赋值一次
- 修饰方法,方法不能被重写
面向对象(final关键字修饰局部变量)
A:案例演示
方法内部或者方法声明上都演示一下(了解)
基本类型,是值不能被改变
引用类型,是地址值不能被改变,对象中的属性可以改变