java08总结

A 多态
1)三个前提条件:
a:必须有继承关系
b:方法重写
c:必须有父类引用指向子类对象:向上转型
2)多态中的成员访问特点:
a:成员变量:编译看左,运行看左
b:成员方法(非静态的):编译看左,运行看右
c:静态成员方法:编译看左,运行看左(静态方法不算方法重写,和类有关)
3)多态的弊端
不能使用子类的特有功能:
要使用子类的特有功能:
a):创建子类的具体对象(虽然可以,但是从内存角度考虑,不好:耗费空间)
b):向下转型:将父类的引用强制转换为子类的引用
子类名 对象名= (子类名)父类引用 ;


向下转型经常会出现异常:
ClassCastException
ArrayIndexOutOfBoundsException:数组角标越界异常
NullPointerException:空指针异常(解决方案:给对象做非空判断)
if(对象名!=null){
给该对象进行操作..
}
B: 抽象类: 
a:概念
 是由于在一个类中存在一个抽象功能,所以必须用abstract去修饰当前的这个类

abstract class Animal{}

抽象类中不一定有抽象方法,如果一个类中有抽象方法,那么这个类一定是抽象类!
抽象类是不能直接实例化的:不能创建对象
抽象类的子类:具体类
抽象类的实例化:需要通过该抽象类的子类进行数据的初始化!抽象类多态
Animal  a = new Cat() ; 抽象类多态形式
b)抽象类的成员特点

成员变量:可以是自定义常量,也可以是变量
成员方法:可以抽象方法(没有方法体的方法),也可以是非抽象方法
构造方法:可以有无参构造/也可以有有参构造
学生类:标准类
c)abstract不能和哪些关键字共同使用
public或者protected(这两个 是可以使用的)
static
private
final

C:接口

创建对象:具体类对象(根据具体需求)
   使用抽象类多态(次之)
 使用接口多态(最常用的)
接口的表示方法:interface  接口名{} 接口名和类名的命名规则一样
接口的子实现类和接口的关系:implements实现
class 子实现类名implements 接口名{}
接口的子实现类:一定是一个具体类;子实现类是抽象类(没有意义)
接口不能直接实例化--->最终创建接口的对象就是通过子实现类来进行实例化!


接口里面的代码越少越好:
登陆();
注册() ;
接口的子实现类 implements 接口{
登陆(){
//业务逻辑
}
}


测试类
main(){
通过接口多态:
接口名  对象名 =new  子实现类名() ;
}
接口的成员特点:
成员变量:
变量是一个常量:默认修饰符:public static final
成员方法:默认修饰符:public  abstract

    接口中是不能有构造方法的

 1)需要定义一个类工具类:ArrayTool数组工具类:给该类写上文档注释(每一个静态方法都需要使用文档注释)
2)需要将该类的无参私有化,目的是为了让外界创建对象
3)ArrayTool中的成员方法全部用static修饰
4)测试完毕
5)如何制作API文档


针对ArrayTool来制作


 打开dos---->javadoc -d 目标名(文件名) -author -version ArrayTool.java
打开API:
显示---->输入你查找的类
索引---->搜索

找到某一个类:
对该类的描述
看类结构:
看该类是否有字段(变量),构造方法(如何创建该类对象),方法(类的成员方法)
出现该类的版本号:
Scanner java.util.Scanner;

JDK5.0以后的新特性:自动拆装箱(int--->Integer,char--->Character),静态导入(导入的方法级别),可变参数,增强for循环(集合),枚举
JDK7.0也有新特性(匿名内部类:局部内部类访问局部变量特性:局部变量必须被final讲)
内部类
 在一个类中定义另一个类,那么把这种情况:内部类:
举例:
在类A中定义一个类B,那么类B就是类A的内部类,同理,类A就是类B的外部类
//外部类
class Outer{
//外部类的成员变量
// public int num = 100 ;
private int num = 20 ;

//内部类
class Inner{
//内部类的成员方法
public void show(){
System.out.println(num);
}
}

//外部类的成员方法
public void method(){
// show() ;
//创建内部类对象
Inner i = new Inner() ;
i.show() ;
}
}


//测试类
public class InnerDemo {
public static void main(String[] args) {

}
}
 内部类的分类:
成员内部类:在外部类的成员位置
局部内部类:在外部了的局部位置定义的这个类
在测试类中需要访问成员内部类中的成员的方法:
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值