JAVA入门 第四章 面向对象

构造器

反编译java文件指令: javap fileName

  • 缺省的无参构造器:默认 无参 无代码

  • 在显示的写出之后,可以填写自定义代码

  • 主要作用:进行成员属性的初始化

  • 如果自己写一个 有参构造器,那么缺省的无参构造器就不再默认提供了

创建对象的过程

  1. 在堆中的永久区(方法区)中查找是否存在 要创建对象的类模版;
  2. 如果没有,使用类加载器加载该模版;
  3. 如果有,则不用重新加载。保证该模版在永久区中是唯一的
  4. 根据类模版中定义的属性 在GC区中开辟适当大小的空间
  5. 把此空间全部写0。目的让所有属性都有初始值。
  6. 如果属性有显示赋值,则更新该空间中对应的值
  7. 执行构造器方法
  8. 返回内存地址

成员属性的默认初始值:

数据类型 默认初始值
byte 0
short 0
int 0
long 0
float 0.0F
double 0.0D
boolean false
char '0a0000'
引用类型 null

四种访问权限修饰符

  • 修饰类的成员(属性) 定义前,用来限定 对象 对 该类成员的访问权限。

    修饰符 类内部 同一个包 子类 任何地方
    private Y
    default(缺省) Y Y
    protected Y Y Y
    public Y Y Y Y
  • 修饰 时,只可以用 public 和 default(缺省);

    |修饰符|同一个包|子类|任何地方
    |:--|:--|:--|:--|:--
    |default(缺省)|Y
    |public|Y|Y|Y

JavaBean

JavaBean是一种Java语言写成的可重用组件

所谓javaBean,是指符合如下标准的Java

  • 类是公共的
  • 有一个无参的公共的构造器
  • 有属性,且有对应的get、set方法

用户可以使用JavaBean:

  1. 将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,
  2. 并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。

用户可以认为JavaBean提供了一种 随时随地的复制和粘贴 的功能,而不用关心任何改变。

public class TestJavaBean {

    //属性一般定义为private
    private String name;
    private int age;

    public TestJavaBean() {
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

JDK中的 主要的包(package) 介绍

  1. java.lang

    包含一些Java语言的核心类,如String、Integer、Math、System和Thread,提供常用功能。

  2. java.util

    包含一些 实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。

  3. java.net

    包含执行与 网络相关 的操作的类和接口。

  4. java.io

    包含能提供多种 输入/输出 功能的类。

  5. java.text

    包含了一些java格式化相关的类

  6. java.sql

    包含了java进行 JDBC数据库 编程的相关类/接口

  7. java.awt

    包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。

  8. java.applet

    包含applet运行所需的一些类。

package 包目录结构名称, 包目录通常是4层

package 机构类型.机构名称.项目名称.模块名称;

//atguigu.com 通常用域名作为包名.
package com.atguigu.javase.javabean; 

在源文件中一旦使用了package, 作用是

告诉 编译器 此文件中的所有类在生成.class后, 要把这些文件放在 对应的包目录 结构中.

注意点 :

  1. 如果使用了package, 在编译源文件时, 必须加上选项-d ,

    javac -d 目标目录(通常就是.目录) 源文件名
    javac空格-d空格.空格.java文件
    
  2. 如果一个类使用了package, 那么这个类在被其他包的其他类使用时, 必须使用这个类的全限定名称(full qulified name)

    //全限定名是指 包名.子包名.子子包名.子子子子包名.类名;
    //简单类名 类名
    package com.school.learnjava.test.FileName;
    
  3. package语句必须位于源文件中的第一行

纯手动运行带包项目

对象关联 :

一个类的对象想要频繁地使用另外一个对象,如何关联? 在本类中把另外一个类的对象作为属性即可

一旦作为属性, 需要处理全参构造, 添加get/set, 处理say方法

MVC设计模式

  • 模型层 model 主要处理数据

数据对象封装 model.bean/domain

数据库操作类 model.dao

数据库 model.db

  • 控制层 controller 处理业务逻辑

应用界面相关 controller.activity

存放fragment controller.fragment

显示列表的适配器 controller.adapter

服务相关的 controller.service

抽取的基类 controller.base

  • 视图层 view 显示数据

相关工具类 view.utils

自定义view view.ui

这种将程序输入输出数据处理,以及数据的展示 分离开来的设计模式,好处:

  1. 使程序结构变的灵活而且清晰,
  2. 同时也描述了程序各个对象间的通信方式,
  3. 降低了程序的耦合性。

方法覆盖 override

父类中私有方法不能被继承。

条件:
  1. 方法签名 必须相同。即 覆盖方法 和 被重写方法的方法名称、参数列表和返回值必须相同。
  2. 覆盖方法的访问权限应该 大于或等于 被重写方法。
  3. 同为非 static 。
  4. 子类方法抛出的异常 不能大于 父类中被重写方法的异常。

你可能感兴趣的:(JAVA入门 第四章 面向对象)