目录
1.万物皆对象,属性即特征,方法即行为
自然界中任何事物,都可以理解为一个对象,每个对象都有其特征和行为。在Java程序中使用属性和方法将其具体描述。
一类事物共同拥有的特征称之为属性,在Java中用属性来描述 f field : 字段 属性 成员变量 实例变量(实例:真实存在的个例)
一类事物共同拥有的行为,称之为方法,在Java类中使用方法描述 m method 方法
2.类和对象的关系
类是对象的抽象 比如 人类、动物、电子产品类 只通过这些信息无法确定具体的对象是谁
对象是类的具体 例如 张三、李四、隔壁老王、楼下的狗、路边的梧桐树,这些属于具体存
在的个例、实例
3. 编写类和创建对象
编写类:通过分析此类事物共有的特征和行为 通过属性和方法来描述,编写在类中
创建对象:通过 new 关键字创建对象 , 访问属性和方法通过对象加点
创建对象的过程也称作实例化
public class Student {
String name;
int age;
double weight;
double height;
String studentNo;
String address;
char sex;
public void study(){
System.out.println("学生学习");
}
public void eat(){
System.out.println("学生吃饭");
}
public void sport(){
System.out.println("学生健身锻炼身体");
}
public static void main(String[] args) {
// 创建对象 通过new关键字创建对象 格式 类名 对象名 = new 类名();
Student stu1 = new Student();
// 访问(取值和赋值)属性 通过 赋值:对象名.属性名 = 值 取值 :对象名.属性名
stu1.name = "赵四";
stu1.age = 20;
stu1.sex = '男';
stu1.height = 188.5;
stu1.weight = 85.6;
stu1.address = "象牙山";
stu1.studentNo = "sz666";
// 访问行为 通过 对象名.方法名() 调用方法
stu1.eat();
stu1.study();
stu1.sport();
System.out.println("-------------------------------------------------------");
Student stu2 = new Student();
stu2.name = "广坤";
stu2.age = 25;
stu2.sex = '男';
stu2.address = "象牙山";
stu2.studentNo = "sz888";
stu2.height = 175.8;
stu2.weight = 75.6;
stu2.study();
stu2.eat();
stu2.sport();
}
}
4.实例变量
public class Teacher {
String name;//实例变量
String course;
int teachYear;
char sex;
double weight;
boolean isHappy;
public void teach(){
// String name = "赵四";
System.out.println(name + "老师上课");
}
public void printInfo(){
System.out.println("我的名字是:" + name);
System.out.println("我的课程是:" + course);
System.out.println("我的教龄是:" + teachYear);
System.out.println("我的性别是:" + sex);
System.out.println("我的体重是:" + weight);
System.out.println("我今天是否开心:" + isHappy);
}
public static void main(String[] args) {
Teacher zs = new Teacher();
zs.name = "赵四";
zs.teachYear = 10;
zs.isHappy = true;
zs.sex = '男';
zs.weight = 70;
zs.course = "形体艺术";
zs.printInfo();
}
}
5.构造方法(构造器)
构造方法:用于创建对象的特殊方法
书写格式:访问修饰符 + 类名(){ }
实例方法:访问修饰符 + 返回值类型 + 方法名(){}
构造方法不能手动通过句点调用 创建对象即出发构造方法的调用
无参构造:默认存在 由JVM提供 如果书写了有参构造方法,无参构造方法将被覆盖 如需使用,必须显示书写
有参构造:即有参数的构造方法,用于在创建对象时给此对象的属性赋值
构造方法重载:同一个类中的构造方法,参数列表不同(个数、类型、顺序)称之为构造方法重载
public class Person {
String name;
int age;
char sex;
String address;
double height;
public void printInfo(){
System.out.println("我的名字是" + name);
System.out.println("我的年龄是" + age);
System.out.println("我的性别是" + sex);
System.out.println("我的地址是" + address);
System.out.println("我的身高是" + height);
}
public Person(){
System.out.println("Person 类的无参构造方法执行了");
}
public Person(String n,int a,char s,double h,String addr){
name = n;
age = a;
sex = s;
height = h;
address = addr;
}
public Person(String n,int a){
name = n;
age = a;
}
public Person(int a,String n){
name = n;
age = a;
}
public static void main(String[] args) {
Person p1 = new Person();
p1.name = "赵四";
p1.age = 20;
p1.sex = '男';
p1.height = 185;
p1.address = "深圳";
p1.printInfo();
System.out.println("---------------------------------------");
Person p2 = new Person("广坤",18,'男', 177, "深圳");
p2.printInfo();
System.out.println("---------------------------------------");
Person p3 = new Person("大拿", 20);
p3.sex = '男';
p3.height = 175;
p3.address = "广州";
p3.printInfo();
System.out.println("---------------------------------------");
}
}
6. this关键字
表示当前对象
用途:
1.属性:通过this . 属性名即可访问
2.方法:访问实例方法,可以使用 this.同级别实例方法
3.构造方法: this.参数列表 的方式调用本类中其他的构造方法 以提高代码的重用性
必须在本类构造方法中的第一句位置
关于构造方法:创建对象一定会触发构造方法的调用 调用构造方法不一定是创建对象的*
实际开发中 我们对于一个类 只会书写两个构造方法 :一个无参构造 一个全参构造
public class Person {
String name;
int age;
char sex;
String address;
double height;
public void printName(){
System.out.println("我的名字是:" + name);
}
public void printAge(){
System.out.println("我的年龄是" + age);
}
public void printInfo(){
this.printName(); // 这里可以使用this加点访问同级别的实例方法 也可以直接调用
printAge();
System.out.println("我的性别是" + sex);
System.out.println("我的地址是" + address);
System.out.println("我的身高是" + height);
}
public Person(){
System.out.println("Person 类的无参构造方法执行了");
}
public Person(int age){
this.age= age;
}
public Person(String name, int age){
this(age);
this.name = name;
}
public Person(String name,int age,char sex){
this(name,age);
this.sex = sex;
}
public Person(String name, int age, char sex, double height, String address){
this(name,age,sex);
this.height = height;
this.address = address;
}
public static void main(String[] args) {
Person p2 = new Person("广坤",18,'男', 177, "深圳");
System.out.println(p2.name);
p2.printInfo();
}
}