今天学完IT十八掌第五天java基础课程:
学习内容:
1,jvm栈空间设置
堆空间设置: java -Xmx<size>
java -Xms<size>
栈空间设置: java -Xss<size>
死循环不会导致栈溢出,因为在不断的压栈,弹栈
方法不断迭代会导致栈溢出,不断的在压栈(方法帧)
2,继承
构造函数:
为什么没有返回值。
因为构造函数就是为了返回对象的,固定了,所以没必要定义返回值类型。
代码块
-----------------------
构造代码块
|-----先于构造函数调用
1,局部代码块
在函数内部定义,格式为{ }
不能使用static修饰,//因为静态代码块随着类的加载而加载,在函数内部没办法初始化。
2,构造代码块
|---也是类的成员,和成员变量,成员函数同级。
构造对象时,先调用构造代码块,然后是构造函数。
构造代码块+static修饰符 ---->静态代码块
静态代码块在类加载的时候执行,而且只执行一次
静态代码块
----------------------------
哪些时候使用静态呢?
1,不涉及对象操作的数据
2,所有对象操作的共享数据。
手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。
Class.forName(String,boolean initialize,ClassLoader)可以控制加载时是否初始化。
继承(上)
-----------------------------------
1,将共性内容抽取
2,很好的进行重用
3, extends
class B extends A { . . . .}
4,java只支持单继承,不支持多继承
5, java支持多层继承(继承体系)
|--- class A
|--- class B extends A
|--- class C extends B
6,super关键字:超类的,父类的
7,父类的私有属性不能被子类继承,私有方法也不能被子类覆盖。
javabean的规范
------------------
私有的属性,
公有的getter/setter.
函数重写(override)
-------------------------------------------------
特别注意:子类在覆盖父类的方法时,权限是放大或不变的过程,不允许权限降低
比如父类方法为public ,子类覆盖的方法权限为private;总之,覆盖时,子类方法权限一定不小于父类方法权限。
final
--------------------
1.修饰类,表示类不能被继承。
2.修饰方法,表示方法不能被重写。
私有方法可以加final,没有意义,编译通过。(不可能发生)
3.修饰变量,只能被赋值一次。如果不赋值,编译通不过。
3,抽象类 由abstract修饰,将诸多子类的共性抽取,但没有明确的功能主体。
1,抽象类不能被直接创建实例,
2,抽象方法没有功能主体,必须在抽象类中 , 为什么?
(反证,如果抽象方法在非抽象类中,那么就可以被对象调用,而该方法没有功能主体,所以必须定义在抽象类中)
3,抽象类中可以没有抽象方法,而且抽象类中的非抽象方法可以调用本类中的抽象方法,为什么?
(因为抽象类不能直接实例化,所以非抽象方法不会被本类实例调用,抽象方法自然也不会被调用了,所以符合抽象规则)
4,抽象类的非抽象子类必须实现(重写)该抽象类中的所有抽象方法,因为非抽象子类实例需要具备从父类继承的方法的具体实现。
而抽象类的抽象子类可以不实现该抽象类中的所有抽象方法。
5,抽象类的非抽象子类在创建对象时,会先调用父类的构造函数(默认调用的是空参数构造),然后调用自己的构造函数。
相当于super(),也可以显式调用带参的父类构造函数,super(args1,args2,....)
6, abstract + static 非正常的修饰符组合 ,抽象是为了不让创建对象调用,封住入口,加static,可以通过类名.调用,矛盾
abstract + final 非正常的修饰符组合 抽象方法在非抽象子类中必须重写(具体实现),加final不能被重写,矛盾
abstract + private 非正常的修饰符组合 抽象方法在非抽象子类中必须重写(具体实现), 加private,该抽象类的非抽象子类没有权限访问。
4,接口 面向接口编程目的,降低耦合度。
interface
特点:
1,接口是对外暴露的规则。
2,接口是程序的功能扩展
3,接口的出现降低耦合性
4,接口可以用来多实现
5,类在继承其他类的时候可以实现多个接口
6,接口之间可以有继承关系
遇到的问题:
1,构造函数,构造代码块,静态代码块的执行顺序是怎样的,为什么
静态代码块随着类的加载执行,对类进行初始化动作,创建对象时,先执行构造代码块,然后执行构造函数
一般执行构造代码块初始化对象共有属性,构造函数,初始化对象特有属性
2,super和this作用以及用法以及注意事项?
见作业
3,白富美接口案例
需要帮助的问题
白富美案例。
本文出自 “菜鸟成就数据之路” 博客,转载请与作者联系!
原文地址:http://liubx.blog.51cto.com/11235064/1771331