概述
首先Java是一门纯面向对象的语言。那么在说Java类和Java对象之前,先从面向对象的思想说起。面向对象,我所理解的是一种世界观,是一种观察世界、理解世界运行的一种方式。整个世界是一个超级大系统,大系统中有无数的小系统、组成无数小系统的又有各种等级的系统,最小单位的系统又由不同的个体相互组成。不同个体又由基本的个体组成。比如世界最基本的元素(暂且到这一层次,不涉及中字、电子、质子等),这些氧元素、碳元素、铁元素等相互作用相互联系组成基本物质,比如水,比如大分子蛋白质,这些物质又组成各种生命系统或者非生命系统,又相互作用组成更大的系统。最后形成整个世界。Java语言就是以这么奇妙方式去构建世界的。
类是一些相同特征事物的抽象,而对象是类的具体实例。Java的语言构建的世界里,万物皆对象。最基本的元素就是那些Java的基本类型,boolean、long、int、byte、double 、float、short、char。
例如: public class Soldier {
private String name="小明";
private int age="18";
private String gunName="冲锋枪";
public void shoot(){
System.out.println(age+"岁的"+name+"拿着"+gunName+"射击");
}
}
声明一个士兵类,士兵类是一个 对士兵的抽象,士兵类包括属性:姓名 name,年龄 age,枪名gunName,包括一个行为射击shooting。那么 可以这么认为,一个类是由它的属性和行为组成。通俗的话说,这个士兵类是由它的姓名,年龄和枪,然后他还有一个可以射击的行为组成。当然士兵还可以有其它的属性比如衣服、鞋子等,还有其它属性比如吃饭、跑步等。但是在开发中,分析一个类的属性和行为,只保留业务相关属性和业务相关行为。其它的不保留。在Java类中还有一个特殊的行为,是构造方法,这个方法就是为了实例对象而来的,不写就默认不传参数的构造方法。
对象就是类的一个实例了。
例如:public class test {
public static void main(String[] args) {
Soldier soldier=new Soldier();
soldier.shoot();
}
}
输出:18岁的小明拿着冲锋枪射击
Test也是一个类,运行之后,机器默认执行Test类中main方法作为入口。
解耦
那么问题来了,也是最基本的问题,小明是一个士兵,那么肯定还有其它的士兵,比如需要小军士兵,那么需要再声明一个士兵类吗?比如Soldier1类是小军,Soldier2类是小天。这样做肯定不行,那么需要这么声明士兵类:
public class Soldier {
private String name;
private int age;
private String gunName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGunName() {
return gunName;
}
public void setGunName(String gunName) {
this.gunName = gunName;
}
public void shoot(){
System.out.println(age+"岁的"+name+"拿着"+gunName+"射击");
}
}
public class test {
public static void main(String[] args) {
Soldier soldier=new Soldier();
soldier.setName("小明");
soldier.setAge(18);
soldier.setGunName("冲锋枪");
soldier.shoot();
}
}
这样的话士兵类只有一个,不必声明Soldier1、Soldier2···Soldiern,无论小明士兵、小军士兵、都不由士兵类决定,而是交给Test类决定。这样做看似简单,却是以后开发中要一直考虑的大问题。
那么军队不只有士兵组成,还有将军。
public class General {
private String name;
private int age;
private String gunName;
private int level;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getGunName() {
return gunName;
}
public void setGunName(String gunName) {
this.gunName = gunName;
}
public void command(Soldier soldier){
System.out.println(level+"级别的"+name+"将军命令"+soldier.getName()+"开枪");
soldier.shoot();
}
public void shoot(){
System.out.println(age+"岁的"+name+"拿着"+gunName+"射击");
}
}
将军可以命令士兵开枪,将军有等级,将军携带枪,也能开枪,也就是说将军也是士兵的一类。那么显然普通士兵和将军有相同的属性还有一些方法。Java中用继承来描述普通士兵和将军也是军人类。这就来到了继承。
最后
以上就是紧张电脑为你收集整理的Java 基本一:类、对象的全部内容,希望文章能够帮你解决Java 基本一:类、对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复