技术教程:类和对象,构造方法,类的继承。
类和对象的关系。
类(class)是对一类对象进行抽象,得到共同的属性与行为。对象(object)是类的一个具体的实例。不妨将“类”理解成“一类”的类,而对象则是一个具体的实在的事物,比如清北复交是都是大学,那么我们就可以建立一个University类,类中包含了大学都具有的信息,比如校名、位置等等,也包含了大学可能会有的活动,比如取名字和迁校等等,这里面的信息就是类的属性/特征,活动就是类的行为/方法。
在java中,类的构造方法为:
public class 类名 {
//属性
public 数据类型 属性名;
protected 数据类型 属性名;
private 数据类型 属性名;
//方法
public 返回值类型 方法名(){};
protected 返回值类型 方法名(){};
private 返回值类型 方法名(){};
}
需要注意的是,java中,以类为组织单元,类名与文件名要一致。
根据类的构造方法,我们可以实现上述对University类的定义
public class University{
private String name;
private String location;
public String getName(){return name;}
public String getLocation(){return location;}
public void setName(String n){name=n;}
public void setName(String n){name=n;}
}
定义
定义了之后则要创建一个类的对象,对象的创建实际上是通过调用构造函数实现的,而在类的定义中我们并没有定义构造函数,却依然可以创建对象,是因为每一个类都会有一个默认的不含的构造函数,当类内没有定义构造函数时,它就会起作用,当类内定义了构造函数时,则只会调用定义的构造函数,构造函数可以重载,但是默认的构造函数不能与定义的构造函数发生重载,所以当定义了含参构造函数后,要想调用无参构造函数,只能再定义一个无参构造函数。创建对象:
类名 对象名=new 类名();
University PekingUniversity=new University();
调用类的属性/方法:
对象名.属性//如果属性private,则需要通过方法来访问
对象名.方法名()
如:
PekingUniversity.setName("PekingUniversity");
类的继承:
类的继承是类的细化、特殊化的过程。父类和子类的关系可以理解为生物中界门纲目科属种间的关系,可以理解为地理中大洲和国家之间的关系,还可以理解为学生和大学生、高中生之间的关系,总之这是一种包含的关系,父类包含了子类。基于这样的理解,子类会继承父类的所有特征和所有方法(构造函数除外)。这样就会引出一些问题:
1、如果在子类中出现父类同名的特称or方法,如何区分?答:super.以表示父类,this.以表示本类内参数。
2、如果在子类重写父类里定义的方法,则在调用时会调用哪一个方法呢?答:子类。
3、子类的构造函数与父类的构造函数有什么关系呢?答:子类的构造函数一定会调用父类的构造函数而不是继承。
4、子类和父类的自定义数据类型可以实现什么呢?强制转型与自动转型。子类转父类实际上是实现了代码的复用,扩大了代码的适用范围,而父类转子类则是提高了代码的可读性。
在类的继承过程中,要用到关键字extends,注意在Java中只能单继承(而接口则可以多继承)
继承的实现为:
public class 子类名/*派生类*/ extends 父类名/*超类、基类*/ {
//继承中,public\protected\default\private\的权限依次降低。
}
延续上面的例子
public 985University extends University{
private String title;
public String getTitle(){return title;}
public void setTitle(String t){title=t;}
}