第一阶段:Java初级 ------- 面向对象基础

来源:互联网 发布:西门子plc编程电缆型号 编辑:程序博客网 时间:2024/04/28 22:06

    学面向对象用了些时间呢,难点不是很多,知识点的确蛮多的,知识点相互很灵活。算是对面向对象有了基本了解了吧。

 

 

 

 

 

面向对象 类 对象。

    类就是模版,对象就是实例。

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

 

 


private 和  public

private :  将成员在类里私有化。

public  :  将成员对外公有化。

2个关键词都不加,默认为public. main函数除外。

 

 

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

 

 

构造函数。

只能被编译器和同一类中的其他构造函数调用,一般用来初始化对象。

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

 

 

this

this是在每个对象的方法里都有的一个句柄。它指向调用该方法存的对象。this很像是一个
权限,用来表示一个作用域,一个范围。可以通过this来访问该this区域的成员。

例子:1  成员方法里的形参和方法所属的对象的成员变量同名。

         2  一个类里要生成一个对象,而该对象又要访问该对象所在的类,就要this传递给该
             对象。

         3  构造函数除了被编译器调用,也可以被其他函数调用,但是只限该构造函数所在的
             对象内的其他它构造函数。被调用的构造函数直接使用this(参数),编译器会根据
             参数来选着调用相应的构造函数。

 

其实老师在讲部件和容器的时候,我不懂什么是部件,什么是容器。但是老师要讲的意思是明白了,所以我自己写了相应的程序。一个计算4次方的程序。


类1有一个计算2次方的方法,该方法通过访问引用它的对象来获取底数。

类2有一个计算4次方的方法,该方法使用类1的计算2次方的方法两次来计算4次方,类2让类1通过访问类2来获取底数。

 

MAIN生成类2对象,并且设置一个底数,然后使用该对象的计算4次方的方法。

 

 

 

 


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

 

构造函数和析构函数函数是被编译器调用,前者在刚刚生成对象后被调用,后者在对象要消亡
时被调用,也就是调用完后,对象就被从内存里释放了。


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

 


static


该关键词会将成员静态化,也就是编译器在编译的时候直接创建该成员,为其分配内存。所以是可以直接使用,否则不能使用。

类里面,staic这就像是一个公因式。static成员 就是类生成的所有对象的共同点。所以一份就足够了。如果,如果不把它static化,那么每个对象里都会重复生成一个对象,很浪费内存的。


静态代码块: static {}

在类被装载的时候只执行一次的的代码块,一般用来对类进行初始化操作。

 


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

 

 

内部类


内部类成员在访问其他成员时,是从最里层的方法到最外层的类外逐步访问。

我把之前的4次方程序改了一下。

 


 

 

 

stati会使内部类成为外部类。不在属于当前类。


在外面使用内部类,要从内部类所在的最外层类逐层忘里创建实例,最后直到创建内部类。不然创建不了。方法里的内部类只能访问方法里的final变量。final变量会作为常量看待。生命周期长于其所在的方法。该变量只能在定义的时候赋值,不能第二次赋值。

 


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

 

 

JAVA文档注释  /**    */

 

要记忆的规则蛮多的。感觉蛮好玩的。留在以后使用中去熟练了。要使用JAVADOC才可以哦。
使用文档注释的类必须是PUB的。

 


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

 


继承

 


继承好啊,给力啊,但是不能选着性的继承构造不安逸啊,还要从写一个构造调用父构造。而且,当继承层次很深的时候,就要求人的思路要很清晰,不然会晕死的。


多重基础虽然不可以,但是可以利用多层继承来简介实现,c1要继承c2,c3 ;可以这样c1<c2<c3;
这样就继承过来了。


不能继承父类私有的成员。

 

 

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

 

 

子类对象实例化

 

1:  为对象分配内存,对成员变量进行默认初始化。

2:  通过生成对象时调用的构造函数,对构造函数的的形式参数进行赋值。

3:  构造函数内有其他构造函数的调用,即this,就调用它,进入步骤2。

     这些this调用完后,到6.

4:  显示或隐式的用super调用父类构造方法,要追溯到OBJECT.

5:  对成员变量进行显示初始化。

6:  继续执行当前构造函数的其余代码。


也就是:分配内存,进行默认初始化,然后执行完所以的构造函数 。

 

this 和 super不能同时出现在同一构造函数里。

原因很简单。因为在一个子类里,super是肯定会被调用。写不写出来都会被调用,写出来显示调用,不写,就被隐式调用。super总是会在最后一个this被调用后,被调用。也就是某一个this被用后,进入这个this然后就没有新的this了,这个时候就会调用super。但是super调用进去后,就不知道有没有其他this和super了。毕竟这并不和“this 和 super同时出现在同一构造函数”相矛盾。


this 和 super 只能现在构造函数的第一句。


这是子类实例化的规定,如果构造函数有THIS额SUPER就必须把它们放在第一句,不然编译是不会通过的。

 

 

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

 

 

覆盖“父类的方法”


用来覆盖的的方法的定义必须和被覆盖的方法的定义一样,访问权限不能被覆盖的方法弱。
覆盖后还想用父类的方法那就要加SUPER啦。

 


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

 

 

final

 

 

FINAL强调唯一行,不可更改行,对一些特殊的,或是需要保护的对象进行标记。

FINAL变量可以在构造函数里赋值。这个时候应该在每个构造函数里都做同意的初始化。

STATIC  FINAL只能在定义时初始化。

 

 


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

 

抽象类

 

 


有抽象方法类,就必须是抽象类。抽象类不能实例化,继承抽象类的子类只要不完全覆盖抽象类的方法就又是一个抽象类。完全覆盖了抽象方法的子类才能实例化。ABSTRACT.

 

接口 INTERFACE


接口里的成员全部是 PUB的,而且变量默认为STATIC  FINAL,所有方法都是抽象的,只能有常量。
EXTENDX 必须在 IMPLEMENTS之前. IMPLEMENTS放在要进行实现的类名之后。

继承抽象类的时候,都用实现关键字IMPLEMENTS。


*  看到SUN的编译工具出问题··我好开心啊。

 

 

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

 

 

 

对象的类型转换


父类 = 子类 ;子类 = (子类类型)父类;

老师真幽默··男人女人的列子··好有爱啊。

如果(C1 INSTANCEOF C2)C2 = (C1)C2 ;


所有类默认继承 OBJ。所以OBJ不是抽象类,没有抽象方法。

 


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

 

多态

 

以不变应万变;复用性;扩充性;可维护性。接口真好。

 

 

匿名内部类  个人理解就是一个临时的类常量,就像给函数传递参数的时候,直接穿值。不需要传其他变量。

 

 

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

 

 

 

异常


TRY{SOMETHINS}CATCH(Exception arg){ out--->arg.mes} FINALLY!!SYSTEM.EXIT.

throws Exception.   抛出异常,提示;丢弃。


这2个玩意可以增强程序的健壮性。


覆盖有异常的方法的时候,必须抛出相同的异常。覆盖父类的时候,抛出来的异常只能属于父类的异常。

 

 

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

 



有包名的JAVA文件,编译后的CLASS要通过包名访问,而且在文价夹里,包名就是文件目录的结构。

包名 heima.oo.java   访问:heima.oo.java.classname  编译的CLASS在/heima/oo/java/


实际开发对要把CLASS放在一个包名里,而不是在缺省包里。

import 包名.*(或某一个类名)  可以在访问这个包或包中的某个类时,不加包名。但是
如果在IMPORT的多个包里都含有同一名的类,就必须写出完整的包名加类名。

 

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

 


访问控制

 


PRIVATE  类内可见,只能被同一类的其他成员访问。

默认,就是不加访问控制的关键字    包内可见,可以被同一包的其他的类访问。

PROTECTED  子类可见   当然,对上面两种也可见。

PUBLIC   包外可见。其他包可以进行访问。


类只能是PUB或默认两种类型的。

 


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

 

 

JAR  文件


用于查看,打开,生成 JAR的 工具。JAR文件就是包的集合。

 

 

 

原创粉丝点击