Java 类(class), 泛型, Enumeration, iterator

创建: 2020/11/18

完成: 2020/11/18

更新: 2020/11/21 增加泛型, enumeration, iterator

        更改标题 [Java 类] => [Java 类, 泛型, Enumeration, Iterator]

更新: 2020/11/27 补充匿名类

更新: 2021/10/4 修改标题 [Java 类, 泛型, Enumeration, iterator] => [Java 类(class), 泛型, Enumeration, iterator], 以防止我自己找不到这篇文章

 

定义  
class clsName {
    // 实例变量
    type1 varName1 = v1;
    type2 varName2 = v2;
    ...

    // 构造函数
    clsName(prms) {
        ...
    }

    clsName(prms) {
        ...
    }

    // methods
    rtype1 mthName1(params) {
        ...
    }

    rtype2 mthName2(params) {
        ...
    }
}
  •  不初始化的boolean默认false, 数值默认0, object默认null
 
生成实例
clsName v = new clsName(...);

 

匿名类

生成与定义在同一处 

new 类或接口名() {
    ...
};

 

 

 

构造函数
  • 不需要返回值(自动返回自身的参照)
  • 不定义则默认生成没有参数的构造函数
  • 继承
    呼出super class的构造函数

     

    super(args);

     

    - 必须在构造函数里先呼出super(args)

    - 在构造函数里不呼出则默认执行 super(); 

     

       
this

 

method内呼出自身变量,方法  
this.varName

 

 
构造函数里呼出别的构造函数  
this(args);

 必须先呼出这个在进行其他构造函数的处理

 

 

 

实例变量与实例方法
  •  实例变量
    // 实例变量
    type varName;
    
    // 多个
    type varName1, varName2, ...;
    
    // 声明与初始化
    type varName = v;
    
    // 多个
    type varName1 = v1, varName2 = v2, ...;

     

  • 实例方法
    // 实例方法
    rtype mthName(params) {
        ...
    }

     

静态变量与静态方法
  • 静态变量
    // 静态变量
    static type varName1;
    
    // 多个
    static type varName1, varName2, ...;
    
    // 声明与初始化
    static type varName =v;
    
    // 多个
    static type varName1 = v1, varName2 = v2, ...;

     

  • 静态方法
    // 静态方法
    static rtype mthName(params) {
        ...
    }

     

  • 静态代码块(初始化用)
    static {
        ...
    }

     

local变量与范围
local变量
  • 没有默认值
  • 和实例或静态变量重名则优先local变量
范围 代码块(如method)
overload
signature不同即可 signature: 方法名与参数的数据类型, 数量
   
参数的参照
  • 基本数据类型传递的是值
    boolean, char, byte, short, int, long, double ,float
  • 数组和Object传递的是参照
    在函数里改变值外部也会发生变化  
继承  
写法

extends

class clsName2 extends clsName1 {
    ...
}

 

  • 没有extends的都继承Object
  • 只能有一个super class
 类类型的变量  
className varName;

//
Sample v1;
  •  可以代入指定类及其子类的instance
 
super  

overload

变量overload
  • 和super class同名的变量存在时, 忽视super class的
  • 要获取super class的,用 super 

 

方法overload
  • 返回的类型必须和原来的一直
  • 和super class同名的变量存在时, 忽视super class的
  • 要获取super class的,用 super 

 

   
   
   
   

 

 修饰符  
类修饰符
abstract

不能生成实例

  • 只需要声明, 不需要定义(可以定义)
  • abstract类的method需要abstract的要分别添加 abstract 
final

不能被继承

  • final class的所有方法都是final
public

可以被所有类获取

  • 不指定则只能在当前package里获取
不指定

不指定则只能在当前package里获取

变量修饰符  
final

值一旦被赋予则不能变

常用于定义常量

static final type varName = ...;

 

 

private
  • private, protected, public只能指定一个
protected
  • private, protected, public只能指定一个
public
  • private, protected, public只能指定一个
static  
transient  
volatile  
不指定 非final, 非transient, 非volatile
   
   
构造函数修饰符  
private 只能在此类内部代码去调用
protected 可以在此类内部, 子类内部, 同一package内调用
public 能被所有类调用
不指定 默认package-private, 只有同package才能调用
方法修饰符  
abstract  
final 不能被子类重写
native 导入其他语言的methods
private 只能在此类内部调用
protected 只能被此类, 子类内部,同一package内调用
public  
static 静态方法
synchronized 多线程用
   
Object类  所有类都继承Object类
实例方法
boolean equals(Object obj)

是否是同一个Object

比较的是pointer是否是同一个

Class getClass() 获取当前实例的类
String toString()

转换为字符串

  • 重写此方法来用println,print输出信息
   

 

 

Class类
  • 封装程序运行时的class和interface信息 
  • JVM自动生成
实例方法
String getName() 调用数据类型的名称
Class getSuperClass()  
静态方法
static Class forName(String clsName) throws ClassNotFoundException

获取指定类

???为什么永远报错???

https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#forName-java.lang.String-

   

 

   
   
泛型
写法
<T, ...>  
指定class及其子类, 以及接口interface  
<T extends typeName>
  •  interface也要用 extends 
指定类及其父类

 

<T super typeName>

 

 

惯用符号

convetion symbols

 
E  元素
K key
N number
T 类型type
V value
S, U等 第二个及以后的类型
   

 

 

  •  泛型不能用于instanceof
带泛型的类

  

class clsName<T> {
    T varName; // 泛型作为类型直接用
    
    // 方法
    T mthName(T varName, ...) {
        ...
    }
}

 

带泛型的方法

 

<T> rtype mthName(args) { ... }

//
<T> T sample(T v1, T v2, boolean v3) { ... }

 

指定泛型

 

clsName<t1, t2, ...> varName = new clsName<t1, t2, ...>(...);

//
ArrayList<Integer> ary = new ArrayList<Integer>();

 

 

   
Enumeration
简介   
Interface Enumeration<E>

 https://docs.oracle.com/javase/7/docs/api/java/util/Enumeration.html

 

实例方法

 

 boolean hasMoreElements()  
E nextElement()   

 

   
Iterator
简介

 

Interface Iterator<E>

 

https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html

 实例方法  
boolean hasNext()  
E next()  
void remove() 删除返回的最后一个元素
   

 

 

   
   
posted @ 2020-11-18 13:19  懒虫哥哥  阅读(103)  评论(0编辑  收藏  举报