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

原创 2017年01月03日 22:58:57

定义类

[修饰符] 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对象时隐匿执行,而且在构造函数之前执行。

静态初始化块

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

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 举报

相关文章推荐

疯狂JAVA讲义学习笔记5——面向对象2

包装类及其用法Java包含8种基本数据类型,不支持面向对象的编程机制。 为了将8种基本数据类型的变量当成Object类型变量使用,Java提供了包装类(Wrapper Class)。 基本数据类...
  • xundh
  • xundh
  • 2017-01-04 22:52
  • 215

疯狂JAVA讲义学习笔记2——理解面向对象

理解面向对象Java语言是纯粹的面向对象的程序设计语言,这主要表现为Java完全支持面向对象的三种基本特征:继承、封装、多态。Java语言完全以对象为中心,Java程序的最小程序单位是类,整个Java...
  • xundh
  • xundh
  • 2016-12-31 18:26
  • 347

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

《疯狂Java讲义》读书笔记——面向对象(下)

包装类及其用法;JDK1.5之后,提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能,可以把一个基本类型变量直接赋给对应的包装类变量或Object变量。自动拆箱则刚好相反...

疯狂JAVA讲义学习笔记1——Java语言概述

JAVA语言概述JAVA程序运行机制高级语言的运行机制编译型:c 、C++、FORTRAN、Pascal等 解释型:Ruby、Python 伪编译型:Visual Basic,半编译型语言...
  • xundh
  • xundh
  • 2016-12-31 16:18
  • 135

疯狂java讲义笔记2:面向对象的基础

疯狂java讲义笔记2: 面向对象的基础 面向接口编程 接口体现的是一种规范和实现相分离的设计哲学 简单工厂模式: Computer类需要组合一个输出设备,让computer...

疯狂Java讲义笔记_面向对象(下)

1.      基本数据类型的包装类 A. Wrapper Class:Byte,Short,Integer,Long,Character,Float,Double,Boolean。 B. 基本数...

《疯狂Java讲义》第2章——理解面向对象

在本章中,作者主要从以下两个方面进行展开,第一个是简要介绍面向对象,第二个是简要介绍UML,本章结构如下所示: 面向对象 结构化程序设计简介 程序的三种基本结构 面向对象程序设计简介 面向对象的基本...

《疯狂Java讲义(第3版)》.(李刚)——面向对象及UML

1、面向对象的基本特征:封装、继承、多态 Java完全支持使用对象、类、继承、封装、消息等基本概念来进行程序设计,允许从现实世界中客观存在的事物(即对象)出发来构造软件系统,在系统构造中尽可能运用人...

多线程02:《疯狂Java讲义》学习笔记——线程的创建和启动

(1)继承Thread类创建线程类;(2)实现Runnable接口创建线程类;(3)使用Callable和Future创建线程;(4)创建线程的三种方式对比

疯狂JAVA讲义学习笔记3——数据类型和运算符

数据类型和运算法注释Java语言的注释一共有三种类型 单行注释 多行注释 文档注释 如果编写Java源代码时添加了合适的文档注释,然后通过JDK提供的javadoc工具可以直接将源代码里的文档注释提取...
  • xundh
  • xundh
  • 2017-01-02 22:22
  • 204
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)