Java — 类和对象

一、定义类的方法
class 类名{
属性;
方法;
}

类名:可以由字母、下划线、数字或美元符组成,首字母使用大写字母,首字母不能为数字。

类的命名尽量有意义:
属性也叫成员变量,主要用于描述类的状态。
方法也叫成员方法,主要用于描述类的行为。

二、生成对象的方法
格式: 类名 对象名 = new 类名();
例如:Person p = new Person();

三、对象的使用方法
使用对象调用变量和函数:
1.对象.变量
2.对象.函数()

四、类和对象-练习

  1. 编写一个学生的类,要求
    属性:姓名、年龄、兴趣、班级编号,
    方法:学习;
  2. 编写一个教师类,要求
    属性:姓名、教授课程、部门;
    方法:教学;
  3. 设计一个主方法,要求在主方法中调用这两个类。
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力申博的计算机研究生!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值