一:对象
1)定义:生活中具体的一个事物。
2)内容:对象包含属性和方法。
1.属性:事物本身的性质,例如某个人的姓名,身高,某个杯子的表面积,容量等。
2.方法:也叫对象的行为,在c中类似于函数,例如某个人学习java语言,吃米饭都可以定义为他(这个对象)的方法。
二:类
1)定义:具有很多共同特性的对象的集合的模板,例如人类,都有鼻子眼睛嘴巴等等,只要你属于人类便都有这些东西,而且每个人的还都不相同!类似于未装修的商品房。
2)内容:属性,方法和构造方法。
1.属性:与对象中的属性相差不大,例如某个人的名字是他(这个对象)的属性,那么"姓名"便是人类这个类的属性。
2.方法:同上,区别在于人类这个类的方法可以是学习这个泛指,而某个人这个对象的方法只能是学习某本书或者某种计算机语言等等具体的事物。
3.构造方法:也叫构造器等,作用是实例化对象,就是由模板做出一个具体的对象。
3)定义一个类的格式:
//类名必须与文件名完全相同,包括大小写
public class 类名 {
//定义属性
private 数据类型 属性名;
//定义方法
public 返回值类型(没有就用void) 方法名 (数据类型 参数名,...,){
//方法体
} //放数据类型和参数名的圆括号里面也可以为空,即无参数
//定义构造方法
public 类名 (数据类型 参数名){
//方法体
}
//如果类里面没有定义构造方法,则系统会默认定义一个构造方法如下
public 类名 (){
}
}
附:1.属性也可看做c里的变量,方法和构造方法也可看做c里的函数,大概就是这个意思。
2.类是一种自定义的数据类型,所以说对象可以像某个数据一样作为参数进行传递,(其他的对象(抽象类,接口,数组)也可以进行传递。)(引用传递)
三:方法与实例化对象,this关键字
1)实例化对象
//实例化类的一个对象,Student为某个类名
类名 对象名 = new 类名();
Student stu = new Student();
//等价于以下代码
Student stu1; //在栈里开辟一块新内存存放stu1的对象名(类似于指针)
stu1 = Student(); //在堆里开辟一块新内存存放这个对象,并将stu1指向这块内存的首地址
2)方法与this关键字
1.构造方法
a.构造方法在类中定义,在主函数中直接调用,构造方法的调用只用于实例化对象。
b.构造方法的方法名必须与类名一致。
c.构造方法没有定义返回值类型,但并不是说没有返回值,构造方法的返回值是一个地址!
/*例:Student类里已定义的构造方法
public Student (String n){
name = n;
}
*/
//类名 对象名 = new 类名(数据类型 参数名,...,);
Student stu = new Student(String "姓名")
2.普通方法
a.普通方法在类中定义,通过对象名调用。
b.普通方法可分为带参数与不带参数,也可分为有返回值与无返回值,这两种分类方法是交叉的。
c.普通方法中的参数使用方法和返回值与c中函数基本一致。
3.方法重载
a.就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
b.条件:方法名字必须要完全相同。
方法所带的参数个数、参数类型、参数顺序,这三项中最少要有一个是不同的。
c.方法重载一般用于用相同的方式来处理不同类型的数据时。
d.调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法。
4.this关键字
a.this指当前对象自己,用法通常为 this.属性名 。
b.this关键字通常用于区别引用对象属性名与当前对象属性名一致而引起的分辨混乱。
public class Boss {
private String name;
//带参数的方法
public void setName(String n){
name = n;
}
//不带参数的方法
public String getName(){
return name;
}
private int blood;
//无返回值的方法
public void setBlood(int n){
blood = n;
}
//有返回值的方法
public int getBlood(){
return blood;
}
//带对象参数的方法(引用传递),this关键字的使用
public void fight(Soldier A){
A.setBlood(A.getBlood() - 10);
System.out.println(A.getName()+"战士被"+this.name+"Boss攻击,剩余血量为:"+A.getBlood());
}
//构造方法的重载
public Boss(String n){
name = n;
}
public Boss(int n){
blood = n;
}
}