世间万物皆为类!
Java中类有好几种,普通类、静态类、抽象类,这里呢我们就讲解最常用的普通类,其他在后续实战章节,用到时顺带讲讲。
一般类的结构如下:
public class类名{ //私有变量 //构造方法 //公有方法 //私有方法 }
私有变量:类内部私有,private修饰,外部不可见也无法访问,主要记录一些类方法执行需要的变量,可没有;
构造方法:类实例化过程,一般用public修饰,有时会传入一些参数,有时会执行一些初始化方法,可缺省;
公有方法:公有方法是可以被外部访问的方法,public修饰,也就是这个类对外暴露的接口,外部可通过类的实例来调用这些方法,可没有;
私有方法:类内部私有,private修饰,外部不可见也无法访问,主要作用就是协助公有方法,可以避免公有方法行数过多,同样可以提取公共代码,避免多个公有方法存在大片重复代码,可没有;
类的添加与接口的添加类似,右击目录-》New-》Java Class
在弹框中输入变量名,回车即可完成创建
新创建出来的Java类只有一个空壳,里面什么东西都没有
上面的类为加法计算类,我们可以给它添加内容了,演示到上面介绍的私有变量、构造方法、公有方法、私有方法:
public classAddCalculate { private booleanrecordLog;//私有变量 publicAddCalculate() {//构造方法 recordLog=true; } public intcalculateInt(inta, intb) {//公有方法 returncalculate(a,b); } public doublecalculateDouble(doublea, doubleb) {//公有方法 returncalculate(a,b); } private intcalculate(inta, intb) {//私有方法 intresult = a + b; if(recordLog) { System.out.println("calculate "+ a +" + "+ b +" = "+ result); } returnresult; } private doublecalculate(doublea, doubleb) {//私有方法 doubleresult = a + b; if(recordLog) { System.out.println("calculate "+ a +" + "+ b +" = "+ result); } returnresult; } }
大家应该发现代码里两个同名的方法,这个就叫重载,专指方法名相同,但参数个数或类型不同,Java会根据参数来判断使用哪个方法。
private int calculate(int a, int b)
private double calculate(doublea,doubleb)
上面的AddCalculate类,我们该怎样使用它的公有方法呢,如下所示
我们需要new一个它的实例,然后通过实例去访问,当我们输入了.后,idea会自动弹出我们可使用的方法。
public static voidmain(String[] args) { AddCalculate addCalculate =newAddCalculate(); intresult = addCalculate.calculateInt(13,34); System.out.println(result); }
运行后我们就得到了下面的输出:
calculate 13 + 34 = 47
47
第一行日志是AddCalculate类的calculateInt方法打印的日志,第二行是main方法打印的日志。
似乎我们还没有用到ICalculate接口,我们以减法运算SubtractCalculate为里,首先我们新增类SubtractCalculate
public classSubtractCalculate { }
然后我们用implements让它实现接口,如下所示
我们会看到它被标红了,说明idea已经检测到异常,这时只要我们把鼠标放上去,就会出现一个弹框,点击"implement methods"即可
此时会自动给我们生成实现Icalculate接口的方法入口
public classSubtractCalculateimplementsICalculate{ @Override public intcalculateInt(inta, intb) { return0; } @Override public doublecalculateDouble(doublea, doubleb) { return0; } }
我们看到生成的方法上面都有一个@Override注解,这个就叫重写,因父类Icalculate是接口,所有方法都没有实现,所以子类需要重写它所有的方法。
public classSubtractCalculateimplementsICalculate{ private booleanrecordLog; publicSubtractCalculate() { recordLog=true; } @Override public intcalculateInt(inta, intb) { returncalculate(a,b); } @Override public doublecalculateDouble(doublea, doubleb) { returncalculate(a,b); } private intcalculate(inta, intb) { intresult = a - b; if(recordLog) { System.out.println("calculate "+ a +" - "+ b +" = "+ result); } returnresult; } private doublecalculate(doublea, doubleb) { doubleresult = a - b; if(recordLog) { System.out.println("calculate "+ a +" - "+ b +" = "+ result); } returnresult; } }
这里我们就已经完成了SubtractCalculate类的编写。那我们怎么使用它呢,一种方式是和上面的AddCalculate一样,当然既然它继承了ICalculate接口,我们就可以使用接口的方式来使用它
public static voidmain(String[] args) { ICalculate calculator =newSubtractCalculate(); intresult =calculate(calculator,13,30); System.out.println(result); } private static intcalculate(ICalculate calculator, inta, intb) { returncalculator.calculateInt(a,b); }
在calculate方法中,并不知道calculator具体是ICalculate的哪种实现,但是可以统一用calculatInt方法来进行int运算。
上面讲到的类比较偏向于方法类,下面简单讲解下更加简单的实体类,实体类一般会有私有变量、公有方法,而它的公有方法主要用于暴露私有变量,比如下面的用户类:
public classUserInfo { privateStringuserName; privateIntegeruserAge; publicUserInfo(String name,Integer age) { userName= name; userAge= age; } publicStringgetUserName() { returnuserName; } public voidsetUserName(String name) { userName= name; } publicIntegergetUserAge() { returnuserAge; } public voidsetUserAge(Integer userAge) { this.userAge= userAge; } }
私有变量用户名称和用户年龄,构造方法用于初始化这两个私有变量,而公有方法用于获取和修改用户名称和用户年龄。
至此就基本讲清楚了Java类,后续的算法讲解,将帮助进一步理解Java类。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/3418.html