Java编程思想(七)

Java编程思想(七)

复用类

编译器不是简单的为每个引用都创建默认对象

如果想初始化引用,可以在代码中下列位置进行:

  • 在定义对象的地方,这意味着他们能在构造器呗调用之前被初始化

  • 在类的构造器中

  • 就在正要使用这些对象之前

  • 使用实例初始化

代码示例:

class Soap{
    private String s;
    Soap(){
        System.out.println("Soap()");
        s = "Constructed";
    }
    public String toString(){
        return s;
    }
}
public class Bath {
    private String s1 = "Happy",s2 = "Happy",s3,s4;
    private Soap castille;
    private int i;
    private float toy;

    public Bath(){
        System.out.println("Inside Bath()");
        s3 = "Joy";
        toy = 3.14f;
        castille = new Soap();
    }
    {i = 47;}

    public String toString(){
        if (s4 == null)
            s4 = "Joy";
        return
                "s1="+s1+"\n"+
                "s2="+s2+"\n"+
                "s3="+s3+"\n"+
                "s4="+s4+"\n"+
                "i="+i+"\n"+
                "toy="+toy+"\n"+
                "castille="+castille;


    }

    public static void main(String[] args) {
        Bath b = new Bath();
        System.out.println(b);
    }

}


继承语法

如果没有明确指出从其他类中继承,则就是在隐式从Java标准根中继承Object


初始化基类(无参)

构建的过程是从基类向外扩散的。所以基类在导出类构造器可以访问它之前,就已经完成初始化

class Art{
    Art(){
        System.out.println("Art constructor");
    }
}
class Drawing extends Art{
    Drawing(){
        System.out.println("Drawing constructor");
    }
}
public class Cartoon extends Drawing{
    public Cartoon(){
        System.out.println("Cartoon constructor");
    }

    public static void main(String[] args) {
        Cartoon x = new Cartoon();
    }
}


初始化基类(有参)

会使用到super进行传参

class Game{
    Game(int i){
        System.out.println("Game constructor");
    }
}

class BoardGame extends Game{
    BoardGame(int i){
        super(i);
        System.out.println("BoardGame constructor");
    }
}

public class Chess extends BoardGame{
    Chess(){
        super(11);
        System.out.println("Chess constructor");
    }

    public static void main(String[] args) {
        Chess x = new Chess();
    }
}


继承与组合有什么区别

组合和继承的共同点:
继承和组合的使用都可以减少重复代码,同时若类B是类A的内嵌对象,则B类具有A类的全部数据。
不同点:组合是通过在其他类中定义对象来使用类中的方法和属性,不能访问父类的任何接口。而继承则是从父类中得到方法和属性,即可以得到父类的全部接口,并加以调用。
通过组合生成的类和被组合的类之间的逻辑关系:组合生成的类具有被组合类的全部内容,但是并不包括被组合类的全部接口,就是通过被组合的类的对象只能访问组合类的成员函数,但不能直接访问到被组合类的成员函数。
继承类与基类的逻辑关系:即通过派生类的对象不但可以访问派生类的成员函数,也能访问基类的成员函数,派生类是可以完全继承基类的任何内容的包括全部接口。

最清晰判断使用组合与继承的方法:

如果需要向上转型,则继承是必要的,如果不需要,也许就考虑一下是否需要继承。


Final关键字

可能使用到final的三种情况:数据,方法和类

final数据

适用场景:

1.一个永不改变的编译时常量

2.一个在运行时被初始化的值,而你不希望它被改变


继承与初始化

了解创建对象的过程中,初始化的顺序对于了解代码是非常有用的

class Insect{
    private int i = 9;
    protected int j;
    Insect(){
        System.out.println("i="+i+",j="+j);
        j =39;
    }

    private static int x1 = printInit("static");
    static int printInit(String s){
        System.out.println(s);
        return 47;
    }
}

public class Beetle extends Insect{
    private int k = printInit("Beetle.k initialized");
    public Beetle(){
        System.out.println("k="+k);
        System.out.println("j="+j);
    }
    private static int x2 = printInit("static Beetle.x2");

    public static void main(String[] args) {
        System.out.println("Beetle constructor");
        Beetle b = new Beetle();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值