您的位置:首页 > 编程语言 > Java开发

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

2016-05-13 12:40 567 查看
1.文字阐述静态代码块的作用。2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?4.定义类Person,Man,Woman形成继承关系。5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?6.抽象修饰符有哪些非法组合?并给出合理的解释?7.super和this作用以及用法以及注意事项?8.定义接口1.IWhite2.IRich3.IBeanti4.定义类,实现以上三个接口.(WomenStar)5.定义土豪类(EarchRicher.marring(...))【--------------------------------问题1-------------------------------------------】
1.文字阐述静态代码块的作用。答:静态代码块在类加载的时候执行,而且只执行一次。

【--------------------------------问题2-------------------------------------------】2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么?答:构造代码块调用顺序优先于构造方法,和方法的声明位置无关。构造代码块作用:a.可以存放多个构造方法的共同代码,提升代码的重复性b.对成员变量初始化
【--------------------------------问题3-------------------------------------------】3.类加载时,是否一定会执行静态代码块?如何手动控制类加载?答:类加载时默认执行静态代码块。手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。如,Class.forName("Benz");Class.forName("Benz", ture, BenzDemo4.class.getClassLoader());//Benz是要载入的类名,BenzDemo4是测试类,参考下面的代码class Benz{
//静态成员变量
private static String brand="x";

public static String getBrand(){
return brand;
}

//静态代码块
static{//这里加static,下面加载类Class.forName("Benz");的时候就会把这里打印出来了,
System.out.println("喷漆!");
System.out.println(brand);
System.out.println("打蜡!");
}
//无参构造函数
public Benz(){
System.out.println("new Benz()---无参构造函数");
}
}

public class BenzDemo4 {
public static void main(String[] args)throws Exception {
//加载Ben类
//Class.forName("Benz");//会有异常,要抛出。---上面的那段静态代码段随着类的加载而加载
//Class.forName("Benz");//只加载一次,第二次及就不加载了
System.out.println("---------------------------------------------------------------------");

Class.forName("Benz", false, BenzDemo4.class.getClassLoader());//false,加在了类,但是没有初始化的
System.out.println("---------------------------------------------------------------------");
new Benz();//上面如果是false,创建对象的时候加载
new Benz();
System.out.println(Benz.getBrand());//private如果brand不是定义私有的,可以直接类.属性访问 ---Benz.brand
}
}

【--------------------------------问题4-------------------------------------------】
4.定义类Person,Man,Woman形成继承关系。答:class Persion {
}
class Man extends Persion {
}
class Woman extends Persion {
}
【--------------------------------问题5-------------------------------------------】
5.什么是抽象方法?什么是抽象类?抽象类是否有构造函数,是否可以重载?答:抽象方法是:没有方法体的方法。必须使用abstract修饰.如 public abstract void eat();抽象类:含有抽象方法的类,就是抽象类,抽象类也必须要使用abstract修饰。abstract class Animal{}抽象类有构造函数,并且可以被重载
【--------------------------------问题6-------------------------------------------】6.抽象修饰符有哪些非法组合?并给出合理的解释?答:abstract + static 是非法的修饰符组合。static修饰可以更方便的访问公共的属性,抽象的直接访问时没有任何意义的abstract + final 是非法的修饰符组合。final修饰的就是最终的,不能更改,抽象需要去实例化的,需要操作abstract + private是非法的修饰符组合。抽象类需要子类继承来实例化,私有是不能继承的

【--------------------------------问题7-------------------------------------------】
7.super和this作用以及用法以及注意事项?答:super : 超类,作用方面类似于this.super(...) : 访问超类的构造函数.只能用在第一行。默认是super();this是只想对象自身的引用this:指向对象自身的引用。this(...)表示的是调用当前类的构造函数.只能用在第一行。默认this();【--------------------------------问题8-------------------------------------------】

//白
interface IWhite{
public abstract void white();//完整的是这个
}
//富
interface IRich{
void rich();
}
//美
interface IBeauti{
void beauti();
}

//定义一个集成的接口,白富美
interface IWRB extends IWhite,IRich,IBeauti {
//继承了之前的抽象方法
}

//司机接口
interface IDriver{
public abstract void drive();
}

//女明星实现类---白富美中的典型
class WomanStar implements IWRB{//类型 WomanStar 必须实现继承的抽象方法

//实现继承的抽象方法
public void white(){
System.out.println("I'm white");
}

public void rich(){
System.out.println("I'm rich");
}

public void beauti(){
System.out.println("I'm Beauti");
}
}

//会开车的女明星
class WomanStarDriver extends WomanStar implements IDriver{//只要会开车就可以,用接口--
//类型 WomanStarDriver 必须实现继承的抽象方法 IDriver.drive()
public void drive(){
System.out.println("女司机开车慢慢开哦");
}

}

//有钱人想征婚类
class RichMan{
//成员方法,征婚对象要白富美的女人
public void marry(IWRB woman){//征婚对象时白富美的聊聊看
System.out.println("聊聊看!!!");
}
//要个开车的女司机
public void driver(IDriver driver){
driver.drive();//这个已经看明白了,创建司机对象 driver,调用司机方法.drive()
}
}

public class MarriyDemo1 {
public static void main(String[] args) {
RichMan rm=new RichMan();//创建一个富商
WomanStar star=new WomanStar();//创建一个女明星
rm.marry(star);//打印出--聊聊看---女明星star是实现了IWRB接口的类的对象
System.out.println("-----------------");
WomanStarDriver m2=new WomanStarDriver();
rm.marry(m2);//找会开车的女明星聊聊看看,也是实现了IWRB接口的类的对象
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  接口 如何 java基础