关闭

疯狂JAVA讲义学习笔记4——面向对象1

标签: java面向对象函数对象指针
327人阅读 评论(0) 收藏 举报
分类:

定义类

[修饰符] class 类名
{
零到多个构造器定义..
零到多个Field…
零到多个方法…
}

修饰符

  • public
  • protected
  • private
  • static
  • final
  • abstract
    abstract和final最多只能出现其中之一,可以与static组合起来修饰方法

构造函数

与类名同名的函数,不带返回类型。

对象、引用和指针

public class Person
{
    public String name;
    public int age;
    public void say(String content){
       System.out.println(content);
    }
}
Person p;     //p变量,放在栈内存里
p=new Person();   //Person对象放在堆内存里

类也是一种引用数据类型,因此程序中定义的Person类型的变量实际上是一个引用,它被存放在栈内存里,指向实际的Person对象,而真正的Person对象则存放在堆(heap)内存中。

栈内存里的引用变量并未真正存储对象的Field数据,对象的Field数据实际存放在堆内存里。

当一个对象被创建成功以后,这个对象将保存在堆内存中,Java程序不允许直接访问堆内存中的对象,只能通过该对象的引用操作该对象。不管是数组还是对象,都只能通过引用来访问它们。

堆内存里的对象可以有多个引用,即多个引用变量指向同一个对象。如接上面的程序:

Person p2=p;

如果堆内存里的对象没有任何变量指向该对象,那程序将无法再访问该对象,这个对象就变成了垃圾,Java的垃圾回收机制将回收该对象,释放该对象所占的内存区。
因此,如果希望通知垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可,也就是把这些引用变量赋值为null。

对象的this引用

this关键字总是指向调用该方法的对象。根据this出现位置的不同,this作为对象的默认引用有两种情形:
- 构造器中引用该构造器正在初始化的对象
- 在方法中引用调用该方法的对象
this关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或Field。
在static修饰的方法里不能使用this引用。
Java语法规定:静态成员不能直接访问非静态成员。

有些时候this可以省略。

Java允许使用对象来调用static修饰的Field方法,但应避免这样使用。

方法

  • Java的方法参数传递只有一种方式:值传递

形参个数可变的方法

public class Varargs{
   public static void test(int a,String... books)
   {
       for(String tmp : books)
       {
          System.out.println(tmp);
       }
   }
   public static void main(String[] args)
   {
        test(5,"疯狂Java讲义","ABC");
   }
}

递归方法

方法重载

成员变量和局部变量

隐藏和封装

package、import 和 import static

JDK1.5后新增引入静态成员:
import static java.lang.Math.*;
引入所有静态Field和方法

继承

super限定

如果需要在子类方法中调用父类被覆盖的实例方法,则可使用super限定来调用父类被覆盖的实例方法:

public void callOverrideMethod()
{
   super.fly();
}

多态

Java引用变量有两个类型:一个是编译时类型,一个是运行时类型。如果编译与运行时类型不一到处,就可能出现所谓的多态(Polymorphism)

instanceof运算符

instanceof运算符的前一个操作数通常是一个引用类型变量,后一个操作数通常是一个类(也可以是接口,可以把接口理解成一种特殊的类),它用于判断前面的对象是否是后面的粝,或者其子类,实现类的实例。

继承与组合

初始化块

初始化块是Java类里可出现的第4种成员,一个类里可以有多个初始化块,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化后执行

public class Person
{ 
   {
        ; //先执行
   }
   {
        ; //2
   }
   public Person()
   {
       ; //3
   }
   public static void main(String[] args)
   {
      new Person();
   }
}

初始化块只在创建Java对象时隐匿执行,而且在构造函数之前执行。

静态初始化块

在类初始化阶段执行静态初始化块,因此比普通初始化块先执行。
静态初始化块会一直上溯到顶父类静态初始化类先执行,最后才执行该类的静态初始化块。

0
0
查看评论

《疯狂java讲义》第4章思考

把一个4位数字字符串转换成一个中文读法,需要思考的点是 两个零连在一起时该如何处理呢?如果最高位是零如何处理呢?最低位是零又如何处理呢? 针对首尾为零的情况。用一个if语句解决。针对两个连续零的情况用temp变量解决。 import java.util.Arrays; public...
  • gugexiao
  • gugexiao
  • 2016-05-09 21:57
  • 409

《疯狂Java讲义》学习笔记

教材《疯狂java讲义》14.10.30更新:前4章; 14.11.05更新:第5章、第6章; 14.11.21更新:第7章、第8章; 14.12.01更新:第8章1-3节; 第15章1-4节
  • chnqutan
  • chnqutan
  • 2014-10-30 16:18
  • 1218

学完分享:李刚《疯狂JAVA讲义》学习笔记思维导图版

李刚老师的《疯狂JAVA讲义》厚达800多页,如果不做任何笔记并将知识体系化,很难将里面的知识内化成自己的东西。我在三个月的学习过程中,不但认真完成里面的实验,而且细心梳理了知识结构,并通过思维导图软件(MindManagerV14)按全书的章节布局进行记录和整理,从而方便自己随时复习、巩固和查阅。...
  • midong2000
  • midong2000
  • 2013-12-28 15:58
  • 3092

疯狂Java讲义(第3版)pdf

下载地址:网盘下载 前 言 编辑 Java语言赢得了前所未有的成功:从2001年到2007年,Java语言一直是世界上应用最广泛的编程语言,因此越来越多的工作者、学习者正努力进入Java领域或将要努力进入Java领域。 为了帮助广大工作者、学习者能真正掌握...
  • cf406061841
  • cf406061841
  • 2017-07-19 13:39
  • 543

《疯狂Java讲义(第3版)》.(李刚)——流程控制

1、流程控制1)顺序结构 没有任何流程控制,自上而下依次执行。 2)分支结构 [1]if条件语句 三种形式:if(条件){ //流程 }if(条件){ //流程 }else{ //流程 }if(条件){ //流程 }else if(条件){ //流程 ...
  • qq_32347977
  • qq_32347977
  • 2016-04-22 14:40
  • 1089

<疯狂Android讲义>阅读笔记(4)

java程序的国家化主要通过如下三个类完成 1、java.util.ResourceBundle:用于加载一个国家、语言资源包。 2、java.util.locale:用于封装一个特定的国家/区域、语言环境 3、java.text.MessageFormat:用于格式化带占位符的字符串。 ...
  • qq_34203494
  • qq_34203494
  • 2016-07-18 16:24
  • 455

java基础学习(5)疯狂java讲义第4章课后习题解答源码

1.下面是疯狂java讲义习题后的源码,欢迎大家前来更新 、协作,一起把这本书后的习题做完,github开源地址:https://github.com/wei0long/javaLearn,现在只更新到第4章,后面陆续开始,欢迎大家前来push.2.下面是1-5题源码:t1.java// creat...
  • yywan1314520
  • yywan1314520
  • 2016-07-20 01:26
  • 1617

疯狂java讲义第四章第一题

package chapter04; /**** * 本帖最后由 kongyeeku 于 2012-3-11 23:02 编辑 看到有一些读者询问关于该题的解题思路,其实这个题是有一些很绕的地方。 大家可按如下5个步骤来思考这个问题: 1.习题要求能支持简体中文字符,所以你要考虑支持简体中...
  • wconvey
  • wconvey
  • 2013-05-06 15:08
  • 1278

《疯狂Android讲义》学习笔记 -- 深入理解Activity

Activity的说明          Activity是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。每个Activity都会获得一个用于绘制其用户界面的窗口。窗口通常会...
  • xhbxhbsq
  • xhbxhbsq
  • 2016-11-12 17:58
  • 989

《疯狂Android讲义》学习笔记一

接触Android一年了,自学了不久就到公司里实习了,在公司的项目毕竟还是模块级的,很多Android基础知识平常接触不到。最近想想通过读一些书,如《疯狂Android讲义》、《Android群英传》、《Android开发艺术探索》才全面了解并掌握一些基础知识,查缺补漏,全面进阶。   1.Vie...
  • BatmanBruceWayne
  • BatmanBruceWayne
  • 2015-11-25 13:13
  • 1845
    个人资料
    • 访问:1354740次
    • 积分:18909
    • 等级:
    • 排名:第571名
    • 原创:727篇
    • 转载:20篇
    • 译文:5篇
    • 评论:193条
    博客专栏
    最新评论