java知识总结

来源:互联网 发布:软件商店有哪些 编辑:程序博客网 时间:2024/06/05 08:40

一、构造函数

1 怎么区分重载的方法:

1)形参列表(2)返回值,只有方法返回值被赋予基个变量才能区分开来。

比如string foo() ,int foo();

如果只是执行foo(),则无法区分调用的是哪个方法。

如果int I = foo();则可以确定调用的是Int foo()

 

2 如果你的类没有定义构造器,编译器会自动给你指定一个默认构造器。如果你定义了构造器,编译器就不会再给你指定默认构造器了,这时,People p = new People()是不能用的。除非你声明了public People(){}

 

3 this()可以在类体中当作构造函数使用。this(1)this(“hello”)

 

二、垃圾回收

垃圾回收器只回收用new分配的内存

 

三、数组初使化

对基本类型数组的初始化

int[] a = {1,2,3,4,5};  //创建组织a并且分配内存,并初始化

int[] b = a; //只是把a的引用赋给bb相当于a相同数组的别名

 

int[] a = new int[6] 创建数组a并为其分配内存,没有初始化,默认为0

 

 

对类数组的初始化

Integer[] a = new Integer[4] //创建数组a,指定了其长度,但是a还只是一个引用,并未进行完整的初始化,要完成初使化,还得给其赋值,比如

a[0] = 0;

 

下面是对类数组使用花括号的方法进行完整初始化的方法

Integer[] a = {

         new Integer(1),

         new Integer(2),

         3,

};

 

Integer[] a = new Integer[]{

         new Integer(1),

         new Integer(2),

         3,

}

 

四、动态参数列表问题

void test(Object… args){}

可以进行以下调用

test(new Object[]{new Integer(1), new Float(1.1), new String(“232432”)})

test(new Integer(1), new Float(1.1), new String(“232432”));

第二种调用会直接转化为第一种

 

除了以Object为参数,也可以用任何一其他一种类型

void(String… args){}不过这种定义只能接受StringString的子类的对象作为参数

 

五、访问权限之public, protectedprivate

如果没有以上三个修饰词,则是“包访问权限”,代表只有当前包下的其他类才能访问这个属性或方法。

public:接口访问权限,对任何一个对象都是可用的。

private:除了自身,其他任何类都不能访问

protected:继承访问权限。它表示,只有子类能访问该成员。但是,该修饰符也有包访问权限,也就是同一个包下的其他类也可以访问该属性。

 

六、singleton:单例设计模式

只能生成一个对象,下面是一个单例模式的例子

package com.study;

 

class F{

    private F(){

      

    }

    privatestatic Ff = new F();

   

    publicstatic F getFInstance(){

       returnf;

    }

    publicvoid printF(){

        System.out.println("What is good to you!");

    }

   

}

publicclass Singleton {

    publicstaticvoid main(String[] args){

       F f = F.getFInstance();

       f.printF();

    }

}

 

杂:

1)继承类的构造器中第一件事就是调用其基类的构造器

2)如果将一个继承类的对象指给其父类的索引,比方说B继承自A

A a = new B();

而且B重写了A中的show()方法,那么b.show()执行是的A中的show()还是B中的show()

执行的是继承类Bshow()方法。因为a只是一个引用,它指向的内存存放的是B的对象,所以当然会调用B的方法。

 

3)多态的好处与缺限

可扩展性,一个方法只需与基类通信,就可以授受所有继承类的对象,因为这些对象会向上转型。

缺限:“覆盖”私有方法

 

四、接口

1 抽象类是位于普通类与接口之间的一种中庸之道

2 抽象类被继承后,其导出类必须实现抽象类中的抽象方法,否则这个导出类也是抽象类。

3 抽象类的方法不必全是抽象方法,可以有普通方法

4 接口是一个完全的抽象,只定义方法声明,完全没有任何实现。它被用来建立类与类之间的协议。

5 接口声明的方法全是public的,即使没有加public修饰符

6 接口中的属性自动都是staticfinal的,即使你没有加这两个修饰符

7 接口使得多重继承可以实现,多重继承可以将一个对象向上继承为多个基类,从而带来更大的灵活性。

8 可以继承一个接口生成一个新的接口,只是,这时要用extends而不是implements

         interface a {}

         interface c {}

         interface b extends a, c {}

 

9 工厂设计模型

生成遵循某个接口的对象的一个典型方式

原创粉丝点击