`
liyanhui
  • 浏览: 350710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java编程思想学习笔记4

    博客分类:
  • java
阅读更多
复用类
  复用类的两种方法:
  第一:在新的类里直接创建旧的类的对象。这是“合成”
  第二:创建一个新的类,与原来那个类同属一种类型的类。它全盘接受旧类的形式,在没有对它做修改的情况下往里面添加了新的代码。这是“继承” 
   合成和继承在做法上有许多相似之处。
  基类的初始化
      要创建一个派生类的对象已经不是一个类的事情了,它会牵涉到两个类---基类和派生类。当我们要创建一个派生类的对象的时候,我们不仅要初始化派生类,基类子对象的正确初始化也是非常重要的,而且也只有一个办法能保证这一点:调用基类的构造函数来进行初始化,Java会让派生类的构造函数自动地调用基类的构造函数。下面这段程序就演示了它在三级继承体系下是如何运作的:
---------------------------------------------------------------------
public 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();
}
};
运行cartoon后台打印出的数据是:
Art constructor
Drawing constructor
Cartoon constructor

-----------------------------------------------------------------
Protected
   在理想得情况下private关键词已经够用了,但是在实际的项目中,我们有时会碰到要让一些东西对外部世界隐藏,但是却要对它的继承类开发,protected关键词就是这种实用主义的体现。
最好的做法是,将数据成员设成private的;你应该永远保留修改底层实现的权利,然后用protected权利的方法来控制继承类的访问权限;


Final关键词
    Final的三种用途:数据,方法,类
Final的数据: 在java中定义final常量时,其类型必须是primitive型的。
      Final 是在创建对象的时候进行初始化的;
      Static final 是在装载类的时候初始化的;
      Public class FinalTest(){
         Private static Random rand = new Random();
         Private final int VAL_ONE = rand.nextInt(20);
         Public static final int VAL_TWO = rand.nextInt(20);
        
         Public static void main(String[] args){
           FinalTest t1 = new FinalTest();
           FinalTest t2 = new FinalTest();
           System.out.println(“t1.VAL_ONE=”+ t1.VAL_ONE);
System.out.println(“t2.VAL_ONE=”+ t2.VAL_ONE);

           System.out.println(“t1.VAL_ TWO =”+ t1.VAL_ TWO);
System.out.println(“t2.VAL_ TWO =”+ t2.VAL_ TWO);

}
}
//结果:
t1.VAL_ONE 和t2.VAL_ONE的值不同
t1.VAL_ TWO和t2.VAL_ TWO的值相同

类的装载:总的莱说“类的代码会在它们第一次使用的时候装载”.(类的装载通常都发生在第一次创建那个类的对象的时候)

多态
   除了static和final方法(private方法隐含有final的意思),java的所有的方法都采用后绑定。也就是说,通常情况下你不必考虑是不是应该采用后绑定—它是自动的。
   Class Shape{
Void draw(){};
Void erase(){};
}
Class Circle extends Shape{
   Void draw(){
       System.out.println(“Circle.draw()”);
}
Void erase(){
    System.out.println(“Circle.erase()”);
}
Public static void main(){
    Shape shape = new Circle();//1
    Shape.draw();//2
}
}
注释1: 上传,这里先创建了一个circle对象,马上就把它的reference赋给了shape。看上去这是一个错误(一种类型怎么能赋值给另一种呢);但是由于circle是由shape派生来的,circle就是一种shape,因此这样做正确。
注释2:可能你认为,这次应该调用shape的draw() 了吧,但是由于实现了后绑定(多态型),实际上它会调用circle.draw();
     结论:只有非private的方法才能被覆写。但是你得留意那些看上去就想是在覆写private方法的程序。它们不会产生编译错误。但是很可能会不按你的计划运行,说的再彻底一些,别用基类的private方法的名字去命名派生类的方法。

抽象类和抽象方法
   当你想要通过一个公共的接口来操纵一组类的时候,就可使用抽象类了。
   继承的前提是你能看到基类,并且还能访问它的public和protected成员
   清理:派生类编写dispose()(清理方法)的时候,第一件事就是调用基类的dispose().因为不这样做,基类就得不到清理。清理的顺序和初始化的顺序相反。

   一个好的构造函数应该,“用最少的工作量把对象的状态设置好,而且要尽可能的避免去调用。”。构造函数唯一能安全调用的方法,就是基类的final方法(这一条也适用private方法,因为它自动就是final的)它们不会被覆写,因此也不会产生意外的行为。
分享到:
评论

相关推荐

    java编程思想读书笔记

    ### Java编程思想读书笔记 #### 一、Java与C++的区别及内存管理 在学习Java的过程中,我们常常会拿它与C++进行比较。这两门语言虽然有着相似之处,但也有许多不同点。 1. **内存管理:** - C++提供了更为底层的...

    Java编程思想学习笔记

    在讨论Java编程思想学习笔记时,首先需要了解的是Java语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...

    《java编程思想》之学习笔记

    java编程思想的笔记。是别人的学习笔记。

    Java编程思想笔记

    ### Java编程思想笔记 #### 重要知识点概览 在深入探讨《Java编程思想笔记》时,我们可以提炼出一系列核心概念和技巧...以上知识点仅为《Java编程思想笔记》中的冰山一角,深入学习和实践是掌握Java编程精髓的关键。

    读书笔记:java编程思想学习.zip

    读书笔记:java编程思想学习

    JAVA个人学习笔记

    JAVA学习笔记是面向对象编程语言的学习笔记,涵盖了JAVA的基本概念、面向对象编程思想、类和对象的概念、实例变量和局部变量的区别、方法的定义和调用、类型转换、精度问题、移位问题、switch语句的使用等内容。...

    java编程思想读书笔记.rar

    《Java编程思想》是 Bruce Eckel 的经典之作,这本书深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。以下是对书中的主要知识点进行的详细解读: 1. **Java语言基础...

    Java编程思想重点笔记(Java开发必看).pdf

    以上只是Java编程思想笔记中的冰山一角,深入学习还包括网络编程、数据库连接、JVM内存模型、垃圾回收机制、并发编程高级话题、Spring框架等内容。这些知识点构成了Java开发者必备的基础知识体系,通过不断学习和...

    Java JDK 6学习笔记——ppt简体版

    Java JDK 6学习笔记是为Java初学者量身定制的一份宝贵资料,它涵盖了Java编程的基础概念、语法以及核心特性。这份PPT简体版旨在帮助读者快速掌握Java开发的基本技能,逐步成为一名合格的Java程序员。 Java JDK...

    java编程思想笔记

    《Java编程思想笔记》是基于 Bruce Eckel 的经典著作 "Thinking in Java" 所做的学习总结,这本书深入浅出地介绍了Java语言的核心概念和技术。在本文中,我们将围绕Java编程的一些关键知识点进行深入探讨,包括但不...

    JAVA编程思想笔记

    ### JAVA编程思想笔记 #### 一、编程语言与Java特性 1. **编程语言类别**: - **机器语言**:直接与硬件交互的语言,由0和1组成。 - **汇编语言**:接近机器语言,使用助记符表示指令。 - **高级语言**:更接近...

    读书笔记:学习Java编程思想.zip

    读书笔记:学习Java编程思想

    Java JDK 8学习笔记 带完整书签(不是页码书签哦)

    对于那些想要提升Java编程技能的开发者来说,这本书是不可多得的参考资料。 总的来说,《Java JDK 8学习笔记》是一本全面覆盖Java 8新特性的指南,它通过深入浅出的讲解和丰富的实例,帮助读者掌握Java 8的核心概念...

    java核心思想读书笔记

    从标题“java核心思想读书笔记”和描述可以看出,这份资料是作者结合《Java核心思想》一书和其他网络资源整理而成,适合不同水平的Java学习者,特别是初学者和有经验的工程师。 1. **Java的设计目标** - 不同于...

    读书笔记:studyThinkOnJava8学习java编程思想基于java8.zip

    读书笔记:studyThinkOnJava8学习java编程思想基于java8

    Java编程思想笔记(全)

    ### Java编程思想笔记知识点概述 #### 第 1 章 对象导论 在这一章节中,主要介绍...以上内容概括了《Java编程思想笔记》中的核心知识点,涵盖了Java语言的基础到高级特性,适合初学者和有一定经验的开发者参考学习。

Global site tag (gtag.js) - Google Analytics