自定义类学习,首先得和C++要理清几个东西,即修饰符:
1、访问修饰符:public、protected、private。用来修饰变量或函数访问权限,类专有。
在访问修饰符上,Java比C++多了个默认(好像没有关键字)。
2、类型限定符:const、volatile等。用来限定变量的存取方式,和Java暂时还不比了,还不知道有什么不同。
3、类型修饰符:signed、unsigned等。Java中没有分有、无符号。
4、类型说明符:char、int、bool等。用来说明变量的类型。
这些修饰符貌似从右到左一次匹配。
自定义类开始,一个源文件中仅有一个public类,且类名与源文件名相同:
public class Session4
{
public static void main(String[] args)
{
}
}
虽然仅可以有一个public类,但可以有多个非公有类,试了下可以有proteced、默认、private,但private在同包中都不能访问,所以貌似没什么用,通常就采用默认的方式了(即不写修饰符)。
定义一个默认的Employee类:
class Employee
{
private String m_sName;
private double m_dSalary;
public Employee(String sName,double dSalary)
{
m_sName = sName;
m_dSalary = dSalary;
}
public String getName()
{
return m_sName;
}
public void setName(String sName)
{
m_sName = sName;
}
public double getSalary()
{
return m_dSalary;
}
public void setSalary(double dSalary)
{
m_dSalary = dSalary;
}
}
写到这里就不得不提几个问题了:
1、在Java中,理应更加关心接口,可接口和实现放在了一起,不多的代码却要占用大量的篇幅。虽然在outline中也可以看个大概,但还是没有翻源码来得方便。
2、为什么Java核心技术书中的例子都是将变量即域放在类定义起始位置呢,虽然有习惯性,但难道更加关注数据而不是接口?反正C++还是经常接口写在前边,数据次之。
3、为什么那么多代码写成员变量即域,不加点修饰标志的呢如“m_”,起码一看就知道是什么呀,个人觉得这样更好维护。
最后说一说访问修饰符:
类中 | 包中 | 继承子类 | 包外 | ||
公有的 | public | ok | ok | ok | ok |
受保护的 | protected | ok | ok | ok | no |
默认的 | ok | ok | no | no | |
私有的 | private | ok | no | no | no |