一、定义类的方法
class 类名{
属性;
方法;
}
类名:可以由字母、下划线、数字或美元符组成,首字母使用大写字母,首字母不能为数字。
类的命名尽量有意义:
属性也叫成员变量,主要用于描述类的状态。
方法也叫成员方法,主要用于描述类的行为。
二、生成对象的方法
格式: 类名 对象名 = new 类名();
例如:Person p = new Person();
三、对象的使用方法
使用对象调用变量和函数:
1.对象.变量
2.对象.函数()
四、类和对象-练习
- 编写一个学生的类,要求
属性:姓名、年龄、兴趣、班级编号,
方法:学习; - 编写一个教师类,要求
属性:姓名、教授课程、部门;
方法:教学; - 设计一个主方法,要求在主方法中调用这两个类。
package exercise2;
public class Student {
String name;
int age;
String interest;
int Cno;
public void study(){
System.out.println("我的名字是:" + name);
System.out.println("我的年龄是:" +age );
System.out.println("我的兴趣是:" + interest);
System.out.println("我所在的班级编号是:" + Cno);
}
}
package exercise2;
public class StudentText {
public static void main(String args[]){
Student zhangsan = new Student();
zhangsan.name = "张三";
zhangsan.age = 18;
zhangsan.interest = "唱歌";
zhangsan.Cno = 1701;
zhangsan.study();
}
}
输出结果:
我的名字是:张三
我的年龄是:18
我的兴趣是:唱歌
我所在的班级编号是:1701
package exercise2;
public class Teacher {
String name;
String course;
String department;
public void teach(){
System.out.println("我的名字是:" + name);
System.out.println("我所教授的课程是:" +course);
System.out.println("我所在的部门是:" + department);
}
}
package exercise2;
public class TeacherTest {
public static void main(String arge[]){
Teacher lisi = new Teacher();
lisi.name = "李四";
lisi.course = "java程序设计";
lisi.department = "计算机学院";
lisi.teach();
}
}
输出结果:
我的名字是:李四
我所教授的课程是:java程序设计
我所在的部门是:计算机学院
**五、类和对象-作业
按要求编写Java应用程序,属性与方法名称自行定义。
(1)创建一个叫做People的类:
属性:姓名、年龄、性别、身高
方法:说话、计算加法、改名
(2)创建主类:
创建一个People对象p:名叫“张三”,性别“男”,年龄18岁,身高1.80;
让该对象调用成员方法:
说出“你好!”
计算23+45的值
将名字改为“李四”
package work2jiangjie;
public class People {
String name;//姓名
int age;//年龄
String sex;//性别
double height;//身高
public void talk(String message){
System.out.println(message);
}
//计算加法
public int add(int a,int b){
System.out.println(a + "+" + b + "的和为" + (a+b));
return a+b;
}
//改名
public void rename(String newname){
name = newname;
System.out.println("名字改为:" + name);
}
}
package work2jiangjie;
public class PeopleTester {
public static void main(String[] args){
People p = new People();//创建People类的对象p
p.name = "张三";
p.sex ="男";
p.age = 18;
p.height = 1.80;
p.talk("你们好!");
//计算23+45的值
p.add(23,45);
//将名字改为“李四”
p.rename("李四");
}
}
输出结果:
你们好!
23+45的和为68
名字改为:李四
六、构造方法(函数)
构造方法是用来初始化对象的方法,一般用于为对象的属性赋初值。
class Person{
Person(){
…
}
}
另一个文件中调用Person p = new Person();
~构造方法的特征
1.函数名必须和类名相同;
2.构造方法没有返回值类型的定义;
3.使用new调用构造方法;
4.若类中没有构造方法,编译器会默认加一个参数为空,方法体为空的构造方法;
5.若类中已有构造方法,则编译器不会添加构造方法。
七、构造方法-练习
请定义一个交通工具(Vehicle)类,其中有:
属性:速度(speed),颜色(color)等
方法:移动move(),设置速度setSpeed(int speed),加速speedUp(),减速speedDown()等等
最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过构造方法给它初始化speed,color的值,并打印出来,另外,调用加速,减速的方法对速度进行改变。
package course3;
public class Vehicle {
int speed;//Vehicle的属性-成员变量
String color;
Vehicle(int speed, String color){
this.speed = speed;
this.color = color;
System.out.println("该交通工具的初始速度为:" + this.speed );
System.out.println("该交通工具的颜色为:" + this.color );
}
public void move(){
System.out.println("移动");
}
//设置速度,speed为setSpeed中的局部变量
//this表示当前对象
public void setSpeed(int speed){
this.speed = speed;
}
//加速,改变speed的值,使其增加
public void speedUp(int speedUpValue){
speed += speedUpValue;
}
//减速
public void speedDown(int speedDownValue){
speed -= speedDownValue;
}
public void showSpeed(){
System.out.println("当前速度:" + this.speed);
}
}
package course3;
public class Tester {
public static void main(String[] args){
//实例化交通工具对象v
Vehicle v = new Vehicle(1,"白色");
v.speedUp(49);
v.showSpeed();
v.speedDown(10);
v.showSpeed();
}
}
输出结果:
该交通工具的初始速度为:1
该交通工具的颜色为:白色
当前速度:50
当前速度:40
八、this的使用
this就是当前对象,代表了调用了这个函数的对象。
(具体例子,见上题)
九、实例成员和类成员-static
在一些变量前或方法(函数)前带有关键字static
如果方法前带有static,则称之为类方法。
不带有static的方法称为实例方法。
一个类可以通过new运算符创建多个不同的对象(实例),这些对象会被分配不同的(成员)变量(赋值)。
不同的对象具有各自不同的属性,因为这些成员变量在内存中的存储位置不相同。他们之间互不影响,这些属性(成员变量)都是实例变量。
如果类中某个属性用static修饰,则其为类变量。
当我们使用new创建多个不同的对象的时候,这些对象中的类变量占有相同的一处内存,改变其中一个对象的类变量的值,会影响其他对象的这个变量的值。
package course3;
public class Student {
String name;//姓名-实例变量、成员变量、属性
static String school;//学校-类变量
}
package course3;
public class StudentTester {
public static void main(String[] args){
//通过类名.的方式调用类变量
//使用类变量时,尽量直接用类名来引用,这时我们知道这个变量是类变量,会更改该类所有对象的属性
Student.school="Harbin University of Commerce";
Student s1 = new Student();
Student s2 = new Student();
s1.name = "A";
s2.name = "B";
System.out.println("s1的姓名是:" +s1.name);
System.out.println("s1的学校是:" +s1.school);
System.out.println("s2的姓名是:" +s2.name);
System.out.println("s的学校是:" +s2.school);
//尽量不用对象的方式来调用类变量
s2.school = "HIT";//任一对象修改类变量的值,整个类变量的值都被修改
System.out.println("s1的姓名是:" +s1.name);
System.out.println("s1的学校是:" +s1.school);
System.out.println("s2的姓名是:" +s2.name);
System.out.println("s的学校是:" +s2.school);
}
}
输出结果:
s1的姓名是:A
s1的学校是:Harbin University of Commerce
s2的姓名是:B
s的学校是:Harbin University of Commerce
s1的姓名是:A
s1的学校是:HIT
s2的姓名是:B
s的学校是:HIT