Java基础第五天_静态代码块、类的继承和接口
2016-05-11 15:23
513 查看
1.文字阐述静态代码块的作用。2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?4.定义类Person,Man,Woman形成继承关系。5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?6.抽象修饰符有哪些非法组合?并给出合理的解释?7.super和this作用以及用法以及注意事项?8.定义接口1.IWhite2.IRich3.IBeanti4.定义类,实现以上三个接口.(WomenStar)5.定义土豪类(EarchRicher.marring(...))
1.
1.局部代码块
在函数内部定义
不能使用static修饰
2.构造代码块
也是类的成员,和成员变量和成员函数同级
构造对象时 ,先调用构造代码块,然后是构造函数。
构造代码块,加static修饰符就变成静态代码块,
静态代码块在类加载的时候执行,而且只执行一次
3.静态代码块
构造代码块+static 修饰符
静态代码块在类加载的时候执行,而且只执行一次
手动控制类加载使用Class.forName("classname") 默认加载类时 执行代码块
Class.forName(String,boolean initialize,ClassLoader) 可以控制加载时是否初始化
2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?
构造对象时 ,先调用构造代码块,然后是构造函数。跟位置无关。
作用:a.对成员变量初始化
b.构建多个代码块进行方法重载
3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?
默认执行静态代码块 手动控制类加载使用Class.forName("classname") 默认加载类时 执行代码块Class.forName(String,boolean initialize,ClassLoader) 可以控制加载时是否初始化4.定义类Person,Man,Woman形成继承关系。
class Person{
}
class Man extends Person{}
class Woman extends Person{}
5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?抽象方法:没有方法体的方法,必须用abstract修饰
抽象方法只能存在于抽象类中
抽象类也必须使用abstract修饰,含有抽象方法的类
抽象类有构造函数,可以被重载。
6.抽象修饰符有哪些非法组合?并给出合理的解释? abstract + static 是非法的修饰符组合。静态直接访问没有意义,需要实例化后访问 abstract + final 是非法的修饰符组合。final修饰为最终的但是抽象方法需要实例化重写 abstract + private是非法的修饰符组合。private 修饰子类不能继承进行实例化7.super和this作用以及用法以及注意事项?this 是指向对象自身的引用
this(...)表示的是调用当前类的构造函数
super 指向父类
super(...) 访问超类的构造函数
都是只能用在第一行
8.定义接口1.IWhite2.IRich3.IBeanti4.定义类,实现以上三个接口.(WomenStar)5.定义土豪类(EarchRicher.marring(...))
//白
interface IWhite{
public void white();
}
//富
interface IRich{
public void rich();
}
//美
interface IBeauti{
public void beauti();
}
//白富美集合
interface IBFM extends IWhite,IRich,IBeauti{
}
//开车接口
interface Drive{
public void drive();
}
// 女明星实现这个接口
class WomanStar implements IBFM{
public void white(){
System.out.println("我很白");
}
public void rich(){
System.out.println("我很富");
}
public void beauti(){
System.out.println("我很美");
}
}
//会开车的女明星
class WomanStarDriver extends WomanStar implements Drive{
public void drive(){
System.out.println("会开车");
}
}
//土豪
class RichMan{
public void marry(IBFM i){
System.out.println("有戏");
}
//土豪条件增加会开车
public void drive(Drive d){
System.out.println("好好开");
}
}
//主方法
class MarryDemo{
public static void main(String[] args){
WomanStar w=new WomanStar();
w.white();
RichMan rm=new RichMan();
rm.marry(w);
WomanStarDriver wsd =new WomanStarDriver();
System.out.println("---------------");
wsd.white();
rm.marry(wsd);
rm.drive(wsd);
}
}
1.
1.局部代码块
在函数内部定义
不能使用static修饰
2.构造代码块
也是类的成员,和成员变量和成员函数同级
构造对象时 ,先调用构造代码块,然后是构造函数。
构造代码块,加static修饰符就变成静态代码块,
静态代码块在类加载的时候执行,而且只执行一次
3.静态代码块
构造代码块+static 修饰符
静态代码块在类加载的时候执行,而且只执行一次
手动控制类加载使用Class.forName("classname") 默认加载类时 执行代码块
Class.forName(String,boolean initialize,ClassLoader) 可以控制加载时是否初始化
2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?
构造对象时 ,先调用构造代码块,然后是构造函数。跟位置无关。
作用:a.对成员变量初始化
b.构建多个代码块进行方法重载
3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?
默认执行静态代码块 手动控制类加载使用Class.forName("classname") 默认加载类时 执行代码块Class.forName(String,boolean initialize,ClassLoader) 可以控制加载时是否初始化4.定义类Person,Man,Woman形成继承关系。
class Person{
}
class Man extends Person{}
class Woman extends Person{}
5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?抽象方法:没有方法体的方法,必须用abstract修饰
抽象方法只能存在于抽象类中
抽象类也必须使用abstract修饰,含有抽象方法的类
抽象类有构造函数,可以被重载。
6.抽象修饰符有哪些非法组合?并给出合理的解释? abstract + static 是非法的修饰符组合。静态直接访问没有意义,需要实例化后访问 abstract + final 是非法的修饰符组合。final修饰为最终的但是抽象方法需要实例化重写 abstract + private是非法的修饰符组合。private 修饰子类不能继承进行实例化7.super和this作用以及用法以及注意事项?this 是指向对象自身的引用
this(...)表示的是调用当前类的构造函数
super 指向父类
super(...) 访问超类的构造函数
都是只能用在第一行
8.定义接口1.IWhite2.IRich3.IBeanti4.定义类,实现以上三个接口.(WomenStar)5.定义土豪类(EarchRicher.marring(...))
//白
interface IWhite{
public void white();
}
//富
interface IRich{
public void rich();
}
//美
interface IBeauti{
public void beauti();
}
//白富美集合
interface IBFM extends IWhite,IRich,IBeauti{
}
//开车接口
interface Drive{
public void drive();
}
// 女明星实现这个接口
class WomanStar implements IBFM{
public void white(){
System.out.println("我很白");
}
public void rich(){
System.out.println("我很富");
}
public void beauti(){
System.out.println("我很美");
}
}
//会开车的女明星
class WomanStarDriver extends WomanStar implements Drive{
public void drive(){
System.out.println("会开车");
}
}
//土豪
class RichMan{
public void marry(IBFM i){
System.out.println("有戏");
}
//土豪条件增加会开车
public void drive(Drive d){
System.out.println("好好开");
}
}
//主方法
class MarryDemo{
public static void main(String[] args){
WomanStar w=new WomanStar();
w.white();
RichMan rm=new RichMan();
rm.marry(w);
WomanStarDriver wsd =new WomanStarDriver();
System.out.println("---------------");
wsd.white();
rm.marry(wsd);
rm.drive(wsd);
}
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树