UML类图

UML  Unified Modeling Language (UML)又称统一建模语言或标准建模语言

在一个类中

     属性表示这类事物的性质(描述它的数据)

     方法表示这类事物的功能(用代码实现功能就意味着写流程)

 

可见性

Java中默认的可见性是包内可见

Private 将可见性限制在本类内部,在类的外部,即使同一个包中也不能访问

Public 将可见性完全放开,所有地方都可以访问

Protected 本包和子类可见

可见性是语言和编译器和JVM级别的,这些信息保存在类的元数据中

类的元数据:

类的全名

类中的成员名

如果方法则包含参数/返回值等详细信息

方法代码的位置(内存地址)

程序启动(此时还没有调用main方法)

Java/javaw一开始运行的时候(此时还没有调用main方法)

加载类(.class,字节码)并保存在代码区

把类中的静态成员/数据初始化到静态区

找到main方法并调用

在栈(Stack)中产生main方法的栈帧

Circle  c =  New Circle()

会在堆(heap)区为c对象分配一块内存空间

调用Circle的构造函数(没有定义的话会自动生成一个)

构造函数会初始化实例属性(没有指定值的话就初始化为0)

对象初始化完毕后,栈帧中会有一个局部变量c指向这个对象

实例属性和静态属性的理解与区别

 实例属性:

1.每个对象都有自己单独的一份实例属性,实例属性的数据保存在堆区。

2.随着对象的创建而产生,可以随时创建对象。

3.会随垃圾回收清理掉,从而释放它占据的内存空间

静态属性

1.一个类只有一份静态属性,无论创建多少个对象,静态数据只有一份。静态数据存放在静态区。

2.类通常在启动时加载,在类加载时被初始化,通过反射才能在运行过程中加载新类。

3.一旦加载就一直存在。

实例方法和静态方法的理解与区别

实例方法

1.在实例方法中访问实例属性,相当于this.属性名,在本类中this可省略

2.在实例方法中默认的上下文环境是this,也就是当前对象

3.在实例方法中可以访问静态属性,相当于 类名.属性名,在本类中类名可省略

静态方法

1.在静态方法中可以访问静态属性,相当于 类名.属性名,在本类中类名可省略

2.在静态方法中不能使用this,也就是不能this.属性名,访问实例属性

static void Count() {

PI = 3;

//this.radius =5;

}

构造方法 Constructor

1.构造方法与类名相同,没有返回值,连void都没有

2.具有可见性

3 .不写时,编译器默认生成一个无参构造方法

4.将所有实例属性初始化为0

5.如果程序编写了一个构造方法,而不再自动生成构造方法

6.无参构造方法

1>无参构造方法可以方便地创建对象

无论是人工创建还是通过反射创建都很方便

2>无参构造方法创建的对象,属性值要么是0,要么是n

通常在使用之前还需要再次给属性赋一个有用的值

在java中有一个概念---bean

bean类要求有一个无参构造方法

可以使用工具自动创建对象

1.构造器必须与类同名(如果一个源文件中有多个类,那么构造器必须与公共类同名)

2.每个类可以有一个以上的构造器

3.构造器可以有0个、1个或1个以上的参数

4.构造器没有返回值

5.构造器总是伴随着new操作一起调用

Getter/Setter访问器方法

目的是不让属性直接暴露出来,而是通过方法(getter/setter)间接地访问属性

好处是:

可以控制只读、只写

还可以在赋值时进行转换、验证等操作

可以在获取值时进行转换或修改

继承

没有指定父类,默认都从Object类继承

使用extends关键字可以指定父类

如果要覆盖或重写父类的方法,最好标记@Override注解(Annotation)

注解是可以附加到类元数据上的对象

反射是获取类元数据信息的编程接口

抽象类

用abstract标记

不需要实例化,只为继承而存在

抽象方法

不为调用,只为继承

用abstract标记,没有方法体!

抽象类中既可以有抽象方法也可以有非抽象方法!

在继承体系中子类可以通过super关键字访问父类

调用父类构造方法

Super()

调用本类构造方法

This()

访问父类的属性

Super.属性名

调用父类的方法

Super.方法名()

如果父类有无参构造方法,子类可以不显式调用super(),如果没有无参构造方法,必须手动显式调用super(xxx),否则报编译错误。

当父类同时存在无参和有参构造方法时,默认调用无参构造方法。

当未写任何构造方法时,编译期自动帮你添加一个无参构造方法,其他同上。

编译器是会自动在子类的构造行数中,
在首行添加"super();", 这么一个语句,用来初始化父类的数据;

如果没有的话, 编译的时候,无法找到父类的无参构造函数,就无法绑定运行时候调用哪个父类的构造函数,编译的时候就会报错啦;

所以记得在以前学习的时候,
很多书籍都是让重载构造函数的时候, 记得添加一个无参的构造函数

作业

1.

Triangle  三角形

Parallelogram  平行四边形

Sector     扇形

2.

实现oo版的单位转换

java面向对象、构造方法 之内部类的更多相关文章

  1. Java面向对象-构造方法,this关键字

    Java面向对象-构造方法,this关键字 构造方法 概念:构造方法是一个特殊的方法,这个特殊方法用于创建实例时执行初始化操作: 上代码: package com.java1234.chap03.se ...

  2. Java核心技术点之内部类

    1. 为什么要使用内部类     内部类就是定义在一个类内部的类,那么为什么要使用内部类呢?主要原因有以下几点:第一,内部类中定义的方法能访问到它所在外部类的私有属性及方法:第二,外部类无法实现对同一 ...

  3. Java类成员之内部类

    内部类含义: 在Java中允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类. Inner class 一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称. Inner ...

  4. Java—面向对象—构造方法及相关思维导图

    先构造一个Book类的代码 package org.hanqi.pn0120; public class Book { //构造方法 //1.方法名和类名一样 //2.没有返回值,不需要加void / ...

  5. JAVA面向对象-----构造方法

    我们人出生的时候,有些人一出生之后再起名字的,但是有些人一旦出生就已经起好名字的.那么我们在java里面怎么在对象一旦创建就赋值呢? 构造方法作用 构造方法作用:对对象进行初始化. 构造函数与普通的函 ...

  6. Java语法糖之内部类

    例1: class Outer { public void md1(final int a) { final int b = 1; class LocalA { int c = a; } class ...

  7. JAVA基础之内部类

    JAVA基础之内部类 2017-01-13 1.java中的内部类都有什么?! 成员内部类 局部内部类 匿名内部类 静态内部类 2.内部类详解 •成员内部类 在一个类的内部再创建一个类,成为内部类 1 ...

  8. java之内部类

    最近学了java,对内部类有一点拙见,现在分享一下 所谓内部类(nested classes),即:面向对象程序设计中,可以在一个类的内部定义另一个类. 内部类不是很好理解,但说白了其实也就是一个类中 ...

  9. 【Java基础】【07面向对象-构造方法&静态static】

    07.01_面向对象(构造方法Constructor概述和格式)(掌握) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小也要与类名一致) b: ...

随机推荐

  1. openWRT学习之LUCI之中的一个helloworld演示样例

    备注1:本文 讲述的是原生的openWRT环境下的LUCI 备注2:本文參考了诸多资料.感谢网友分享.參考资料: http://www.cnblogs.com/zmkeil/archive/2013/ ...

  2. [Jobdu] 题目1373:整数中1出现的次数(从1到n整数中1出现的次数)

    题目描述: 亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他.问题是:求出1~13的整数中1出现的次数,并算出100~130 ...

  3. SQL2005数据库行列转换

    注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦,全部是我自己写的,用到了系统的SysColumns (一)行转列的方法 先说说行转列的方法,这个就比较好想了,利用拼sql和case wh ...

  4. atitit.设计文档---操作日志的实现

    atitit.设计文档---操作日志的实现 日志查询 1 ----mybatis  配置... 1 添加日志 1 日志查询 <a class="l-link" href=&q ...

  5. 12. Min Stack【medium】

    Implement a stack with min() function, which will return the smallest number in the stack. It should ...

  6. 1、改变 vs编辑器的主题

    打开 visual studio, 在菜单栏选择  工具 -> 扩展和更新 -> 输入 “color theme” 安装完成后,选择样式. 选择好样式后, vs 立即改变主题.再次打开样式 ...

  7. c语言中struct的内存对齐

    为了让CPU能够更舒服地访问到变量,struct中的各成员变量的存储地址有一套对齐的机制.这个机制概括起来有两点:第一,每个成员变量的首地址,必须是它的类型的对齐值的整数倍,如果不满足,它与前一个成员 ...

  8. Win7-U盘安装出现"We were unable to copy your files. "

    使用Windows 7 USB/DVD Download Tool时,提示We were unable to copy your files. Please check your USB device ...

  9. Unity3D学习(十一):关于UI销毁后图集仍然无法释放问题的解决办法

    前言 最近进行项目性能优化的时候发现的问题. 问题 从大厅进到单局的过程中,会经过选择英雄和加载两个流程,这两个流程对应的UI界面都会有一张几mb左右的贴图作为背景,在进入单局游戏后这两个UI已经销毁 ...

  10. 基于jQuery实现文字倾斜显示代码

    这是一款基于jQuery实现文字倾斜显示,这是一款基于jQuery实现的超酷动态文字显示效果.适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. ...