Java基础学习第六天

回顾

--------------------------------

class:类成员

构造函数:和类同名,无返回值。可以重载

第一条语句  this()(调自身)  或 super()(调超类构造)  默认是super(),超类无空构造 要super中要指定构造函数的参数。

成员变量:修饰符 private public final

成员函数

静态成员:跟类有关,存在方法区

静态代码块:  类加载时执行

构造代码块:{}  在创建对象时执行,每创建一个对象执行一次

抽象类:用abstract 修饰的类,不能用于创建对象,一定有构造函数

抽象方法:无方法体,用abstract修饰,用途:为了让子类便于实现。只能放在抽象类中。

final:最终的  修饰  类:不能继承

方法:不能重写  不能覆盖

变量:不能重新赋值,为常量

内部类: 定义在类内部的类,可定义在成员位置上

定义在方法中

内部类名存成文件 的格式:

定义在类中:外部类名$内部类名.class

定义在方法中:外部类名$序号内部类名.class

继承:extends

单重继承,可多层继承

JVM

-------------------------------

方法区:

栈区:调整大小  java  -Xss

堆区:对象太多了,  java -Xms  java 
-Xmx

=========================================================

接口   
:  经编译后也是生成class文件,但是用interfaec修饰的类

----------------------

  1. 格式:interface{ }
  2. 成员修饰符是固定的
    1. 成员变量:public  static 
           final
    2. 成员函数:public  abstract    说明接口中的所有方法都是抽象的。
    3. 发现接口中的成员都是public的
  1. 接口的出现将“多继承”通过另一种形式体现出来,即“多实现”
  2. 接口常用形容词来命名。

接口的特点:

-------------------------------

  1. 接口是对外暴露的规则
  2. 接口是程序的功能扩展
  3. 接口的出现降低耦合性
  4. 接口可以用来多实现
  5. 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
  6. 接口与接口之间可以有继承关系,可以继承多个接口
  7. 接口的主要用作用是类与类、对象与对象之间的交互问题上

示例:

-------------------------------------------------------

class InterfaceDemo1{

public
static void main(String[] args){

//建立类对象

WomenStar
ws = new WomenStar();

//通过类象象调用方法

ws.white();

ws.rich();

//建立tuhao对象

TuHao
tuhao = new TuHao();

//调用marry方法,传入ws对象,因为ws对象实现了White接口,而tuhao将white作为参数传入了方法,对接成功,所以tuhao对象的marry方法可以直接调用ws对象作为方法的参数。

tuhao.marry(ws);

}

}

//定义一个名字为white的接口

interface White{

//接口中的方法都是抽象的,所以方法无方法体,只有括号

public
void white();

}

//定义一个名字为 Rich 接口

interface Rich{

public
void rich();

}

//类实现接口(接键字implements+接口名),如果类不是抽象的,在使用接口时,类中必须对接口中的方法进行实现,就算不需人任何方法也要实现一个空方法(实现的方法名要与接口中一致区分大小写)。

//这里分别调用实现了White 和 Rich
接口

class WomenStar
implements White,Rich{

//实现接口中的方法

public
void white(){

System.out.println("---在WomenStar类中对White接口实现White方法---");

}

public
void rich(){

System.out.println("---在WomenStar类中对Rich接口实现rich方法---");

}

}

//定义Tuhao类

class TuHao{

//将接口作为方法的参数传入

public
void marry( White w){

//通过传用的参数类型,调用形参的方法(也就是接口的方法)

w.white();

}

}

class KoreanMan
implements White{

public
void white(){

System.out.println("---在KoreanMan类中对White接口实现White方法---");

}

--------------------------------------------------------

USB:

---------------------------

接口:面向接口编程的优势:

------------

降低耦合度。(就是降低交互的程度)

接口是最低标准。

多重继承

多态:

---------------------------------------------------

定义:某一类事物的多种存 形式

例:动物中的猫、狗

猫这个对象对应的类开型猫类型

猫  X = new 猫();

同时猫也是动物中的一种,也可以把猫称为动物。

动物 y =  new 猫();

动物是猫和狗具体事物中抽取出来的

父类型引用指向了子类对象。

这种方式就像从不同角度来描述一个事物,就有不同的解释与说法。只能从当前声明的类型位置去调用父级及当前级别中的方法,而不能调用子类中的方法。

在成员变量与成员函数被重写时,使用父类角度看子类,成员变量看父类自己的,成员函数使用子类的。

(类中,方法可以覆盖,成员变量不能覆盖)

继承和实现是实现多态的前提条件

多态特点:

--------------------------------------------------------------------

成员函数:

编译时:要查看引用变量所属的类中是否有所调用的成员

在运行时:要查看对象所属的类中是否有所调用的成员

成员变量:只看引用变量属的类

匿名内部类

优点:将类的声明、方法的实现、对象的创建一气呵成,节省代码量。

------------------------------------------------

示例:

class NoNameDemo1{

public
static void main(String[] args){

RichMan
rm = new RichMan();

//匿名内部类对象,

rm.findLover(new
Wrb(){

public
void white(){

System.out.println("很白");

}

});

}

}

//白富美

interface Wrb{

public
void white();

}

class RichMan{

public
void findLover(Wrb w){

w.white();

}

}

——————————————————

GUI

————————————————

graphic user interface

适配器模式(通过一个抽象类整合实现的方法)及方法链编程

————————————————————————————

示例及说明:

class AdapterDemo{

public
static void main(String[] args){

//创建一个按钮对象

Button
b1 = new Button();

//调用按钮对象的点击方法;

//通过new
MouseListener(){}创建匿名内部类,作为传入方法的参数,此方法参数为MouseListener接口类型。

b1.setListener(new
MouseListener(){

//对MouseListener接口方法进行空实现。

public
void onClick(){

System.out.println("按钮1——单击");

}

public
void onDbClick(){}

public
void onRightClick(){}

public
void onMiddleClick(){}

});

b1.click();

Button
b2 = new Button();

b2.setListener(new
MouseListener(){

//对MouseListener接口方法进行空实现。

public
void onClick(){

System.out.println("按钮2——单击");

}

public
void onDbClick(){}

public
void onRightClick(){}

public
void onMiddleClick(){}

});

b2.click();

/*  以上b1和b2两个按钮调用的方法是相同的,但却又不得不重实现接口中的方法,这样很繁琐。

------------------------------------------

下面通过适配置模式对以上繁琐的方法进行调整,先让其符合一定条件,减化代码,定义一个MouseAdapter的抽象类,并实现MouseListener接口

*/

Button
b3 = new Button();

//这里使用MouseAdapter适配器抽象类来完成

b3.setListener(new
MouseAdapter(){

//对MouseListener接口中的方法,已由MouseAdapter适配器全部实现,这里只需对需要使用的方法进行重新实现,从而节省了代码量。

public
void onClick(){

System.out.println("按钮3——单击");

}

});

b3.click();

Button
b4 = new Button();

b4.setListener(new
MouseAdapter(){

public
void onClick(){

System.out.println("按钮4——单击");

}

public
void onDbClick(){

System.out.println("按钮4——双击");

}

});

b4.click();

b4.dbClick();

//将b4按钮实现的功能融合到一行代码中,形成一个匿名按钮,执行click()方法

//此方法为方法链编程,就是一直点连接的方法。

new
Button().setListener(new MouseAdapter(){

public
void onClick(){

System.out.println("单击了一个匿名按钮");

}

public
void onDbClick(){

System.out.println("双击了一个匿名按钮");

}

}).click()

.dbClick();

}

}

//定义一个按钮类,用来监听鼠标发生的事件,并根据这些事件做出响应。

class Button{

//定义一个成员变量l,用于保存MouseListener接口类型的变量信息

private
MouseListener l;

//为按钮填加一个监听器,用于监听鼠标事件,这时返回值为void
是空的

//public
void setListener(MouseListener l){

//当创建匿名按钮时,在无返回值的情况下,将无法调用方法,所以将返回值类类型调整为自己
Button类型,并增加 返回语名 return this;

public
Button setListener(MouseListener l){

//在填加监听器时,就对l进行赋值。

this.l
= l ;

//是在使用方法链时使用

return
this ;

}

/*

按钮有单击和双击的操作,也就是按钮的方法,单击或双击的实现其实是调用的监听器的事件方法,那这里的MouseListener其实就是一个接口。

*/

//public
void click(){

//如果链式方法需要连续调用方法时,可以在调用的方法中也设定返回类型,并返回自己

public
Button click(){

//调用传入参数接口的方法

l.onClick();

return
this;

}

//双击方法

public
void dbClick(){

l.onDbClick();

}

}

//定义MouseListener接口

interface MouseListener{

//定义鼠标监听器接口中的方法

public
void onClick();

public
void onDbClick();

public
void onRightClick();

public
void onMiddleClick();

}

//定义MouseAdapter抽象类(适配器模式),实现MouseListener接口,来减化创建按钮对象时方法重用时的繁琐程度。

abstract class
MouseAdapter implements MouseListener{

//使用空实现的方法实现MouseListener接口中所有的方法,在使用时只作重写即可。将不用重新实现接口中的所有方法

public
void onClick(){}

public
void onDbClick(){}

public
void onRightClick(){}

public
void onMiddleClick(){}

}

————————————————————————

时间: 2024-08-09 21:52:44

Java基础学习第六天的相关文章

Java基础学习第六天——二维数组与面向对象入门

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.25 lutianfei none 二维数组 格式1(动态初始化) 格式:数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数 举例: int[][] arr = new int[3][2]; 定义了一个二维数组arr 这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2] 每个一维数组有2个元素,可以通过arr[m]

Java基础学习——数组初识(1)

Java基础学习--数组初识(1) 1什么是数组 Java中常见的一种数据结构就是数组,数组可以分为一维数组.二维数组和多维数组. 数组是由一组相同的变量组成的数据类型,数组中每个元素具有相同的数据类型,数组中的每个元素都可以用一个统一的数组名和下标来确定. 2 数组的使用 数组的一般使用步骤: 声明数组 分配内存给该数组 下面是一维数组为例: 数据类型  数组名 []: 数组名 = new 数据类型 [数据个数]: 2.1一维数组的声明与赋值 1.数组的声明 int  num [];    

JAVA基础学习笔记(2)

看了几天的视频了,都没时间来写下学习笔记,今天来写下第二次的学习笔记,前几天看的给忘记了,就写最新看到的吧 主要内容:1.类的变量与函数(方法) 2.对象的存储方式 3.新建一个对象及对象的赋值与调用 4.空对象 5.匿名对象 1.类的变量与函数(方法) class Dog      //类名 { String name;  //变量的声明 int age; String color; void bark()   //方法的定义(返回值为空,不带参数) { System.out.println(

Java基础学习--抽象类与抽象函数

Java基础学习--抽象类与抽象函数 abstract class 抽象类不能制造对象,但是可以定义变量,赋给这个变量的一定是他非抽象子类的对象: 抽象类中的抽象函数没有函数体,例如:public abstract void move(); 一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的. 抽象类中所有的的抽象函数必需子类的覆盖,而非抽象函数不需要覆盖.因为子类会继承父类的函数,如果不去覆盖继承来的抽象函数,那么子类就含有抽象函数,含有抽象函数的类必须要声明为抽象类.

JAVA基础学习笔记(1)

今天第一天开始学JAVA,时间:2014年6月17日 学习内容:1.java环境的架设 2.JAVA基本数据类型 1.JAVA环境的架设       1.要先去下载JDK,下载地址 2.安装完成后,设置环境变量 1.1环境变量的设置        1.右键-我的电脑-属性-高级-环境变量-系统变量,找到PATH,在里面加入jdk里bin目录的地址 如:c:\java\bin; 2.新建-名为classpath,值为. 1.2测试JAVA是否配置正确        1.在cmd里面输入javac.

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

java基础学习笔记day01

java基础学习笔记day01 1.软件开发: 软件:按照特定顺序组织的计算机数据和指令的集合 开发:软件的制作过程 软件开发:借助开发工具和计算机语言制作软件 2.java概述: java之父:詹姆斯·高斯林 JDK:java开发环境 jre:java运行环境 JVM:java虚拟机 java跨平台是因为,JVM能在不同的平台运行,JVM是跨平台的 JavaSE:标准版 JavaME:手机端,物联网 JavaEE:企业版,互联网项目 3.java语言特点: 简单性 解释性 面向对象 高性能 分

Java基础学习1-Java标识符及基本类型

暑假闲来无事,重新学习Java,希望能够加深自己对Java的理解与深入. 第一天,从Java标识符开始. Java标识符的命名规则 - 标识符必须以字母.下划线.美元符$开头. - 标识符其它部分可以是字母.下划线.美元符$和数字的任意组合. - Java标识符的大小写敏感,无长度限制(但是也不要太长,会变成裹脚布的(/ □ \)). - 不可以是Java的关键字(这点只要是有点基础的都会知道啦,Java的关键字还挺多的哦,小心踩到地雷呀). 下面是一个小栗子. /* *测试标识符的写法 */

转载:java基础学习总结——java读取properties文件总结

java基础学习总结--java读取properties文件总结 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下: 1.1.项目的