面向对象是Java语言的主要特点之一,而面向对象的编程又从创建类开始,我们一起来学习
格式:(public/abstract/final) class ...(extends ...)(implements ...){
}
在格式中,打括号的是可选项,第一个括号中的public,abstract,final是表示类的修饰符,第二个括号是表示继承其他类,而第三个括号则是表示实现某些接口,下面一一来看
01 public,abstract,final
public
作用:
可以被其他类和程序使用(被其他包访问)
注意事项:
1一个文件最多只有一个public类
2文件名与该public类名字相同,包括大小写都要一样,如图中2所示
3如果文件中有public类,main方法必须放在public类中,如图中3所示
abstract
特点:
包含抽象方法(方法类比c语言中的函数)即只声明不实现的方法,其方法由子类(继承这个抽象类的 类)来具体实现
注意事项:
抽象类不能直接用new实例化
抽象类中含有抽象方法,但是也可以有其他方法,在本例中,就是在抽象类abstractt中声明了一个抽象方法f2,如图中1所示。接着用public类Ab继承类Abstractt中,即Ab是abstractt的子类,在该子类中对f2进行了定义并且调用实现
注意:声明不要加大括号,如果加了大括号,还是表明实现了方法,只不过是一个空实现
final
特点:
final类中的所有方法都是final方法,而final方法不能被继承也不能被重写
02
extends
在前文介绍abstract类的时候就已经提到过,抽象方法只能由子类具体实现,有子类就有父类,而子类就是继承的父类,继承可以是子类拥有父类的各种属性和方法,不需要再次编写相同的代码
还是在这个例子当中,f1是类abstract的方法,在类Ab中并没有,但由于继承了abstractt,所以在main方法中,对类Ab进行实例化,创建的对象aaa,可以调用f1
儿子长得像爹,但还是有自己的特性。而在类中,子类继承父类属性和方法,也有自己属性和方法,这称为类扩展。
还是这个例子,在类Ab中,定义了其方法f3,这是它特有的
implements
在前文中提到继承,一个子类只能继承一个父类,也就是说一个儿子只能有一个亲爹,但干爹可以认很多个,而接口就是干爹。也就是说,一个类只能继承一个类,但可以同时实现多个接口。一个接口也可以继承多个接口。
格式:(public)interface ...(extends...)
注意:接口体中的成员变量默认为public,static, final,成员方法默认为public,abstract,也就是说只能包含常量和抽象方法
final修饰的成员变量必须人为赋初值且不能改变
static修饰变量时,会让变量一直活到程序结束,也就是说只要程序在运行,这个static修饰的变量一直可以被用
与类同理,只不过这里的extends继承的不是类是接口。
依旧是刚刚的例子,接口中声明了一个常量和一个方法,注意方法不要在接口中定义,接着让Ab去实现接口,在Ab里面定义接口中的抽象方法
现在就是对类体进行编写,赋予其功能实现的能力。
01
创建类成员
格式:(public/protected/private)(static)(final)(transient)(volatile) 变量类型 变量名
格式原理同上,public/protected/private表示成员变量的访问权限,transient表示暂时性变量,比如当变量是用户的密码,银行卡号,那可不能永久保存,要及时消亡,volatile共享变量,感觉是个高级用法。
02
创建类方法
格式:(public/protected/private)(static)(final/abstract)(native)(synchronized) 返回值类型 函数名(形参类型 形参){}
native表示用来把代码和其他语言的代码继承起来,synchronized表示用来控制多个并发线程对共享数据的访问,具体学到后面从使用中体会其作用罢
还是这个例子,框起来的都是类方法
03
实例化
即创建对象,格式:类名+对象名=new 类名()
还是这个例子,创建了类Ab,然后在main方法中对Ab进行实例化创建对象aaa,调用类中有关方法
调用方式:对象名.方法
E N D