java基础毕向东-day6-8

1.只有类才存在静态的变量 方法只能对静态变量的操作 不能在方法内试图定义静态变量否则的话会抛出编译错误。 
   静态变量的本意是为了让所有的对象共享这个变量,如果在方法里面定义静态变量的话就存在逻辑错误了,也达不到你想要目的. 因为在方法定义静态变量根本没有他的任何意义.

2.对于工具类,类中方法不会操作特有的成员函数,所以可以将工具类中的方法加上static,方便用类名直接调用,另外,为了避免别人建立工具类的对象,一般将工具类的构造函数私有化。

3.方法区里面保存了Person类的静态成员变量和所有方法,当setName方法被调用时,setName方法进栈,且里面有一个局部变量name(String name的name)和隐含的一个this(可以这么理解),该方法被哪个对象调用this就指向谁(p),然后完成赋值动作

4.(P83)饿汉式是类一被加载,堆内存中就有对象,s的值就确定了,而懒汉式类加载的时候s为null,等到判断(调用getInstance方法的时候)的时候才建立对象(延迟加载)。

5.(P89)final : 最终。作为一个修饰符,

  • 可以修饰类,函数,变量。
  • 被final修饰的类不可以被继承。为了避免被继承,被子类复写功能。
  • 被final修饰的方法不可以被复写。
  • 被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,有可以修饰局部变量。当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字。方便于阅读。而这个值不需要改变,所以加上final修饰。
  • 内部类定义在类中的局部位置上是,只能访问该局部被final修饰的局部变量

6. 模板设计模式

7. abstract和那些关键字不能共存?

  • final:首先abstract修饰的类,该类中的方法子类继承之后需要重写的,可是final修饰的类不能比继承,也就没子类,方法更不能得到重写,相互冲突;不能共存
  • private:私有的意思,方法子类是不能被继承到的,那么方法就没有被重写,可是abstract是要求方法重写的也相互冲突;不能共存
  • static:因为static修饰的方法是静态方法,其可以直接被类所调用。而abstract修饰的方法为抽象方法,即无方法体的方法,不能够被直接调用,需要在子类或实现类中去编写完整的方法处理逻辑后才能使用。

8.可以多实现是因为接口内没有定义方法体,下面子类中只需要实现一个show方法就可以了,不会出现多继承的冲突情况。但是如果两个接口中存在函数名相同但是返回值类型不同的函数时,不可以同时实现。

9.类与类是单继承,类与接口是多实现,接口与接口之间是多继承

10. 以下是错误示范,在多态进行判断的时候 不要进行父类的判断,因为只要传进来的都是Animal类型,一旦判断成功后下面的判断就不再继续了。

11. (P105)这里面,在进行两个对象的比较的时候(equals方法比较的是地址值,a.equals(b)和a==b,结果相同),equals方法里面既可以接受Demo对象也可以接收Person对象,这也是多态的一个应用(  boolean equals(Object obj)  )

12. equals为Object类中定义的方法,其他类可以复写,复写时参数类型也需要是Object类型,此时在进行其他判断时要注意 需要向下转型。 总结,在进行复写的时候需要进行类型判断和转换的动作。

13.Object类中的 toString 方法返回的是 该对象所属的类@该对象的哈希值的十六进制表现形式

猜你喜欢

转载自blog.csdn.net/u013164983/article/details/83755055