码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础第五天_静态代码块、类的继承和接口

时间:2016-05-11 20:08:32      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:java基础 代码块 继承 抽象

1.文字阐述静态代码块的作用。

2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?

3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?

4.定义类Person,Man,Woman形成继承关系。

5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?

6.抽象修饰符有哪些非法组合?并给出合理的解释?

7.super和this作用以及用法以及注意事项?

8.定义接口

1.IWhite

2.IRich

3.IBeanti

4.定义类,实现以上三个接口.(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.IWhite

2.IRich

3.IBeanti

4.定义类,实现以上三个接口.(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);

}

}




本文出自 “作业” 博客,请务必保留此出处http://10718270.blog.51cto.com/10708270/1772223

Java基础第五天_静态代码块、类的继承和接口

标签:java基础 代码块 继承 抽象

原文地址:http://10718270.blog.51cto.com/10708270/1772223

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!