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

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

静态代码块在类加载的时候执行,而且只执行一次。

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

构造代码块调用顺序优先于构造方法,和方法的声明位置无关。

构造代码块作用:a.可以存放多个构造方法的共同代码,提升代码的重复性

b.对成员变量初始化

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

类加载时默认执行静态代码块。

手动控制类加载使用Class.forName("classname"),默认加载类时,执行代码块。

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

class Persion {

}

class Man extends Persion
{

}

class Woman extends
Persion {

}

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

抽象方法:没有方法体的方法。必须使用abstract修饰。

抽象类:含有抽象方法的类,就是抽象类,抽象类也必须要使用abstract修饰。

抽象类有构造函数,并且可以被重写

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

abstract + static
是非法的修饰符组合。static修饰可以更方便的访问公共的属性,抽象的直接访问时没有任何意义的

abstract + final  是非法的修饰符组合。final修饰的就是最终的,不能更改,抽象需要去实例化的,需要操作

abstract +
private是非法的修饰符组合。抽象类需要子类继承来实例化,私有是不能继承的

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

super : 超类,作用方面类似于this.

super(...) :
访问超类的构造函数.只能用在第一行。默认是super();

this:指向对象自身的引用。

this(...)表示的是调用当前类的构造函数.只能用在第一行。默认this();

8.定义接口

(1)IWhite

(2)IRich

(3)IBeanty

(4)定义类,实现以上三个接口.(WomenStar)

(5)定义土豪类(EarchRicher.marring(...))

interface Iwhite {

public void skinWhite();

}

interface IRich {

public void walletRich();

}

interface IBeauty {

public void faceBeauty();

}

interface WhiteRichBeauty
extends Iwhite, IRich, IBeauty {

}

class RichMan {

public void
marry(WhiteRichBeauty woman) {

System.out.println("Find
Love!");

}

}

class RichManDemo {

public static void
main(String[] args) {

WhiteRichBeauty womanStar
= new WhiteRichBeauty() {

public void skinWhite() {

}

public void walletRich()
{

}

public void faceBeauty()
{

}

};

RichMan man = new
RichMan();

man.marry(womanStar);

}

}

时间: 2024-12-24 07:28:33

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

IT十八掌作业_java基础第五天_静态代码块、类的继承和接口

1.文字阐述静态代码块的作用. A:静态代码块常用来执行类属性的初始化,且只被执行一次. 2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么? 执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 和位置无关. 构造代码块在每次创建对象是都会执行. 3.类加载时,是否一定会执行静态代码块?如何手动控制类加载? 类加载时默认加载静态代码块,class.forName(String name) 或 class.forNa

java基础_静态代码块

/* 静态代码块 格式: static{ 静态代码块中执行语句 } 特点:随着类的加载而执行,并且只会执行一次,并且还优先于主函数 作用:用于给类进行初始化 */ class Per{ static{ System.out.println("我是静态代码块"); } { System.out.println("我是构造代码块"); } } public class A6_42 { public static void main(String[] args) { ne

面向对象_静态代码块

特点:随着类的加载而执行,只执行一次,并优先于主函数作用:用于给类进行初始化用的 格式: static{   静态代码块中的执行语句 } 1 public class StaticCode1 { 2 static{ 3 System.out.println("b"); 4 } 5 public static void main(String[] args) { 6 new StaticCode(); 7 new StaticCode(); 8 System.out.println(&q

Python基础(16)_面向对象程序设计(类、继承、派生、组合、接口)

一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特

java 子类、父类中静态代码块、字段,非静态代码块、字段以及构造函数的初始化顺序和次数

一个类中的数据初始化顺序是面试官非常喜欢出的面试题之一,本文用一个实例来介绍java中子类.父类中静态代码块.字段,非静态代码块.字段以及构造函数的执行顺序和次数. 一.包结构 Cat继承Animal Runner里包含main函数,程序入口 Sing类主要用来打印执行顺序的序列号 二.代码 public class Animal { Sing s1=new Sing(1,"animal\tnot static field"); static Sing s2=new Sing(2,&q

构造函数,构造代码块和静态代码块的先后顺序和运用

在自学到java面向对象时,知道有静态代码块,构造代码块和构造函数的存在,如果说构造函数是初始化对象,那么其他2者又是怎么使用,又有什么区别呢.简单的举了下面的例子: 1 package 面向对象; 2 3 class Child 4 { 5 private String country; 6 private String name; 7 Child(String name)//构造函数. 8 { 9 this.name=name; 10 System.out.println(this.name

JAVA之旅(五)——this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块

JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 this的特点 this就代表本类对象 这在我们的set方法里面是有的 public void setName(String name) { this.name = name; } this代表他所在的函数对属对象的引用 现在我们这里有这么一个需求 //公共的 类 类名 public class H

java基础--java静态代码块和静态方法的区别、static用法

转载自: http://blog.sina.com.cn/s/blog_afddb8ff0101aqs9.html 静态代码块:有些代码必须在项目启动的时候就执行,这种代码是主动执行的(当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化) 静态方法:需要在项目启动的时候就初始化,在不创建对象的情况下,这种代码是被动执行的(静态方法在类加载的时候 就已经加载 可以用类名直接调用) 两者的区别就是:静态代码块是自动执行的; 静态方法是被调用的时候才执行的. 使用类的静态方

java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序

4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print("2"); } } class B extends A{ static { System.out.print("a"); } public B() { System.out.print("b"); } } public class Hello { pu