类的构成

类的构成有以下部分构成:
    代码段
  动态代码段
  静态代码   

  成员变量
  静态变量
  局部变量
  常量
  成员方法
  静态方法
  构造方法
  this(对象)
  super(对象)

下面对类里面的东西进行一一分析,可以更清晰的理解Java类的构成

代码段:

一个完整的大括号就是一个代码段,就代表了一段独立的内存空间,空的也是个代码

动态代码段:
    1、就是没有任何修饰的一对大括号{}
    2、也就是写记录日志,还就是性能测试

静态代码段:
    1、用static修饰的一对大括号static{},是在类加载阶段就运行的代码段            
    2、写日志用,用于记录类被调用的时间的数据

成员变量:
    1、每个对象中的值都是不一样,但是也可以一样
    2、保存的位置:堆内存,堆内存的大小是动态分配
    3、赋值时间:一般情况下在实例化之前是空值,没有赋值的
                在实例化的时候赋值,调用对应的构造方法对成员变量赋值,也可以不赋值,编译器会给默认值。通过调用成员变量进行赋值也可以
                和局部变量的区别:局部变量必须声明就赋值,要不然会报错。
                也是引用数据类型中,多态发生的时候
    4、关联关系:成员变量的值是另外一个类对象的引用
    5、调用:对象名.成员变量名。类名不可以调用成员变量,静态上下中不可以调用非静态属性

静态变量:
    1、是属于类级别的,每个对象中的都一样
    2、保存位置是静态数据区
    3、最好在声明的时候就赋值
    4、调用:类名.静态变量名

局部变量:
    1、在方法中生命的变量是局部变量,并且生命的时候,就必须赋值
    2、局部变量优先级大于成员变量的优先级
    3、方法的形参列表也是局部变量
    4、局部变量和循环体重的变量不可以重名
    5、依赖关系:局部变量的值是另外一个类对象的引用

常量:
    1、声明:public static final 数据类型 大写_ = 值;
    2、在整个软件生命周期中,值不会改变
    3、在接口中,psf可以省略
    4、调用:类名.常量名

成员方法:
    1、没有static修饰的方法叫成员方法
    2、调用:对象名.成员方法名(实参列表);
    3、多态:方法生命的时候,形参列表中是父类或是借口
             调用的时候,传的是子类对象的引用

静态方法:
    1、用static修饰的方法
    2、调用:类名.静态方法名(实参列表);
    3、保存在静态代码区中
    4、不能再静态方法中调用非静态的成员属性

构造方法:
    1、用于在类实例化中,创建当前类对象的方法(实例化当前类对象)
    2、默认是:公共的,静态的,没有返回值的,名字和类名一样的
    3、在实例化中,一般用于实例化成员变量
    4、注意:  单例模式中的使用
               构造的重载,对不同的成员变量进行赋值
               不可以被继承复写,但是可以被调用,super()
               接口中没有构造方法,因为接口就是用类实现的,不需要构造方法,接口不能被实例化
               抽象类中有构造方法,用于子类实例化父类对象super()

this(对象):
    1 给成员变量加前缀,然后复制
    2 用在构造方法中,重载调用本类中别的构造方法,this()重载调用的时候,必须写在构造方法的第一行
    3 用于表示本类的对象,里面保存了本类的地址,this位于堆内存中第一个内存片中
    4 在堆内存中,我们有堆内存中第一个内存片的内存地址作为整个对象的内存地址,并且命名为this

super(对象):
    1 super代表的是当前子类对象中的父类型特征
    2 在子类的构造方法重载调用父类别的构造方法的时候,必须写在第一行
    3 super()和this()不能重复出现
    4 super可以用来调用父类的成员属性和成员方法

在上面的说明中,有两个字出现的频率很高:调用。其实类最主要的作用就是:代码复用

类对象之间的6中关系:
    1 继承
    2 实现
    3 依赖:局部变量是另外一个类对象的引用
    4 关联:成员变量是另外一个类对象的引用
    5 聚合:类中的集合中的元素是另外一个类对象的引用
    6 组合

时间: 2024-12-16 22:15:08

类的构成的相关文章

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

C#嵌套类

嵌套类顾名思义就是类或者结构中定义的类 class Container { class Nested { Nested() { } } } <1>嵌套类的默认访问权限是private ,可以指定为public,protected,private,internal,protected internal.<2>嵌套类型可以访问外部类(包裹嵌套类的类),如果要访问外部类型,要把外部类通过构造函数传进一个实例<3>嵌套类中只能访问外部类中的静态成员,不能直接访问外部类的非静态成

一个实用的C#网页抓取类代码分享

一个实用的C# 网页抓取类 模拟蜘蛛,类中定义了超多的C#采集文章.网页抓取文章的基础技巧,下面分享代码: using System; using System.Data; using System.Configuration; using System.Net; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using Sys

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

java 类对象使用

在学习反射机制时,总结一下获得类对象方式: 第一种方式:通过类本身来获得对象 Class<?> classname = this.getClass(); 或者this.class 第二种方式:通过子类的实例获取父类对象 ClassName cn = new ClassName(); UserClass = cn.getClass(); Class<?> SubUserClass = UserClass.getSuperclass(); 第三种方式:通过类名加.class获取对象 C

Python-class类的相关总结

在Python中,所有的数据类型都可以视为对象,自定义的对象数据类型就是面向对象中的类(class)的概念. 面向对象编程:object oriented programming简称OOP. 1 ###简单举例,以登记学生的姓名和成绩举例 2 #!/usr/bin/python 3 #-*- coding:utf-8 -*- 4 class Student(object): ##定义student类 5 def __init__(self, name, score): ##__init__可以绑

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中