类和对象的特点和具体分析

二维数组的定义格式:

第一种:直接给定了每一个一维数组中数组长度

数据类型[][] 数组名称 = new 数据类型[m][n]

第二种:给定了多少个一维数组,长度动态给定

数据类型[][] 数组名称 = new 数据类型[m][] ;

第三种:二维数组中直接给定元素值

数据类型[][] 数组名称 = {{元素1,元素2},{元素1,元素2}…}

 

如何遍历二维数组

int [][] arr = {{11,22},{33,44},{55,66}} ;

外层循环:控制的是二维数组长度,内存循环,一维数组长度

代码块

Java,{}括起来,统称为代码块

局部代码块,构造代码块,静态代码块(随着类的加载而加载,只执行一次)

构造代码块:在每次执行构造方法之前,优先执行构造代码块

优先级:静态代码块>构造代码块>构造方法

 

MYSQL数据库..  JDBC(Java连接数据库)

继承

class Zi  extends  Fu{…}

继承的好处:

1) 提高代码的复用性

2) 提高代码的维护性

3) 它是多态的前提

继承的特点:

继承不能多继承,只能单继承,但是可以多层继承..

注意事项:

1) 子类继承父类,可以继承父类所有的东西(除过构造方法),私有的(private),不能直接访问,所有需要提供公共的方法

2) 不能继承构造方法,但是可以通过super()关键字去访问

3) 子类继承父类,子类的构造方法(有参/无参)都会默认的访问父类的无参构造方法,优先让父类的数据进行初始化.

假如:父类没有无参构造方法?会怎么样?如何解决?

编译错误;

1) 可以提供无参构造

2) 通过super(父类的带参构造)..

3) 通过this(),通过本类的无参构造,再通过无参构造间接的去访问父类的代码带参构造..

 

成员变量,
如果子类继承父类,子类中的成员变量和父类中的成员变量名称不一致,分别输出

名称一致的情况:先在子类的局部位置找,找到,就输出

还没有找到,到子类的成员位置找,有就输出

否则,到父类的成员位置找,有就输出

没有,就报错

成员方法

子类继承父类,子类的成员方法名和父类的名一致,

先子类中找,有就调用,没有就会到父类中调用

方法重写:override

方法重载:overload

子类声明了一个和父类一模一样的方法声明,其目的是为覆盖父类的方法,完成自己的功能

 

多态:

同一时刻,体现出来的不同状态

多态的前提:

1) 必须有继承关系

2) 必须有方法重写

3) 父类的引用指向子类对象(向上转型)

 

多态的成员访问特点:

构造方法:都是对对象进行初始化的

成员变量:编译看左,运行看左

成员方法(非静态):编译看左,运行看右(存在方法重写)

静态的成员方法:不能算方法重写,和类有关系: 编译看左,运行看左

多态的好处:

提高代码复用性(由继承保证)

提高代码的扩展性(由多态保证)

多态的弊端:不能子类特有功能

向下转型:将父类的引用强制转换为子类的引用

Fu  f = new Zi() ;

//向下转型

Zi z= (Zi)f ;

向下转型:使用不当-àClassCastException:类转换异常

解决方案:自己分析,内存的指向问题

 

 

 

抽象类

接口

 

 

总结:

抽象类:

将类中的功能抽象化,类变成抽象类

关键字:abstract

抽象类的特点:不能实例化 -à不能创建对象

抽象了的子类是具体类才是研究课题:由于具体类所有抽象类通过他子类进行实例化

抽象类多态的形式…

抽象类的成员特点:

成员变量:可以是常量,也可以是变量

构造方法:有参/无参

成员方法:可以是抽象的,也可以是非抽象的

 

有抽象方法的类一定是抽象类

抽象类中不一定有抽象方法…

 

接口:

给一些类提供一些额外的功能(扩展功能),定义接口

关键字:interface

class 子实现类 implements(实现) 接口{

}

接口中的成员特点:

成员变量:此变量是一个常量:public static final :默认的修饰符

构造方法:接口没有构造方法

成员方法:都是抽象方法

 

抽象类和接口的区别?从三个方向去答

成员的区别

关系的区别

设计原则的区别

形式参数是引用类型的情况:

   具体类: 需要传递的是该类 对象

   抽象类:需要传递是该抽象类的子类对象

   接口:需要传递是该接口的子实现类 (还可以匿名内部类的方式)

 

返回值的问题:

   如果是:

         具体类:返回该该具体类的对象

        抽象类:返回的是该抽象类的子类对象(间接的:抽象类多态)

        接口:返回的是该接口的子实现类对象(间接:接口多态)

 

 

内部类:

成员内部类和局部内部类的写法

外部类访问成员内部类,局部内部类中的成员使用的方式….

成员内部类是非静态的,外部类访问内部类的成员

外部类名.内部类名 对象名 = 外部类对象.内部对象;

如果成员内部类是静态的,外部类访问内部类的成员

外部类名.内部类名 对象名 = new 外部类名.内部类名() ;

静态的内部类访问外部类的数据,该数据必须static修饰,和当前静态内部类的成员方法没有关系

 

匿名内部类:

前提:接口或者抽象类(可以抽象类也可以普通类)

new 接口名/类名(){

重写功能(){}

}

本质:继承了该类或者是实现了该接口的子类对象..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值