目录
一、类和对象
1.类的特点
2.类和对象的关系
3.总结
二、类的定义
1.类的定义步骤
2.代码示例
三、对象的使用
1.创建对象
2.使用对象
3.单个对象(代码)
4.多个对象(代码)
四、成员变量和局部变量
1.定义
2.区别
五、private关键字
1.概念
2.代码示例
六、this关键字
1.this修饰的变量用于指代成员变量
2.是么时候用this?
3.this代表所在类的对象引用
4.代码示例
七、封装
1.概述
2.原则
3.好处
八、构造方法
1.概述
2.注意事项
3.代码示例
九、标准类
十、结束语
在讲解类和对象前,我们先来思考一个问题,什么是对象?
万物皆对象,客观存在的事物皆为对象。
我们在想,什么是类?
类是对现实生活中一类具有共同属性和行为的事物的抽象。
接下来我们在想,什么是对象的属性?
属性:对象具有的各种特征,每个对象的每个属性都有特定的值。
那什么又是对象的行为?
行为:对象能够执行的操作。
类:类是对现实生活中一类具有共同属性和行为的事物的抽象。
对象:是能够看的到摸得到的真实存在的实体。
类是对象的抽象 ,对象是类的实体。
类的重要性:是Java程序的基本组成单位
类的组成:属性和行为
public class 类名{
//成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
......
//成员方法
方法1;
方法2;
......
}
在该例子中,我们定义一个手机类,在该类中包括成员变量(品牌、价格),还包括成员方法(打电话,发短信)。
public class Phone {
//成员变量
String brand;
int price;
//成员方法
public void call() {
System.out.println("打电话");
}
public void sendMessage() {
System.out.println("发短信");
}
}
格式:类名 对象名 = new 类名();
范例:Phone p = new Phone();
1.使用成员变量
格式:对象名.类名
范例:p.brand
2.使用成员方法
格式:对象名.方法名
范例:p.call()
还是关于手机的例子,在这之前我们已经定义了一个手机类,接下来就是创建对象和使用对象。在该例子中,我们将手机品牌赋值为华为,手机价格赋值为5999,再调用手机类中的call()方法和sendMessage()方法。
public class PhoneDemo01 {
public static void main(String[] args) {
//创建对象
Phone p = new Phone();
//使用对象
System.out.println(p.brand);
System.out.println(p.price);
p.brand = "华为";
p.price = 5999;
System.out.println(p.brand);
System.out.println(p.price);
p.call();
p.sendMessage();
}
}
多个对象便是创建多个对象,并对这些对象进行赋值和调用。
public class PhoneDemo02 {
public static void main(String[] args) {
//创建p1对象
Phone p1 = new Phone();
p1.brand = "小米";
p1.price = 4999;
//使用p1对象
System.out.println(p1.brand + "," + p1.price);
p1.call();
p1.sendMessage();
//创建p2对象
Phone p2 = new Phone();
p2.brand = "vivo";
p2.price = 3999;
//使用p2对象
System.out.println(p2.brand + "," + p2.price);
p2.call();
p2.sendMessage();
}
}
成员变量:类中方法外的变量。
局部变量:方法中的变量。
区别 | 成员变量 | 局部变量 |
---|---|---|
类中位置不同 | 类中方法外 | 方法内或者方法声明上 |
内存中位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在随着方法的调用完毕而消失 |
初始化值不同 | 有默认的初始值 | 没有默认的初始值,必须先定义,赋值,才能使用 |
讲完类中成员变量和局部变量,我们接下来讲类中的private关键字。
- 是一个权限修饰符。
- 可以修饰成员(成员变量和成员方法)。
- 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问。针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作。
- 提供"get变量名()"方法,用于获取成员变量的值,方法用public修饰。
- 提供"set变量名(参数)"方法,用于设置成员变量的值,方法用public修饰。
我们先定义一个Student学生类,用private修饰成员变量age,并用get变量名()方法获取成员变量的值,set变量名(参数)方法设置成员变量的值。我们在setAge()方法中增加判断语句来判断年龄是否是大于0小于120。
public class Student {
//成员变量
String name;
private int age;
//提供set和get方法
public void setAge(int a) {
if (a < 0 || a > 120) {
System.out.println("你输入的年龄有误");
} else {
age = a;
}
}
public int getAge() {
return age;
}
//成员方法
public void show() {
System.out.println(name + "," + age);
}
}
接下来我们来定义一个学生测试类。
public class StudentDemo {
public static void main(String[] args) {
Student p = new Student();
p.name = "迪丽热巴";
// p.setAge(-28);
p.setAge(28);
p.show();
}
}
解决局部变量隐藏成员变量。
方法被那个对象调用,this就代表那个对象。
我们先定义一个Teacher教师类,在该类中用private修饰成员变量name和age,并使用set()和get()方法用于设置和获取成员变量的值。
public class Teacher {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name + "," + age);
}
}
接下来我们定义一个教师测试类。
public class TeacherDemo {
public static void main(String[] args) {
Teacher t = new Teacher();
t.setName("胡歌");
t.setAge(30);
t.show();
}
}
接下了我们来讲面向对象的三大特征之一的封装。
是面向对象三大特征之一(封装、继承、多态)
是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法
直接操作的。
将类的某些信息隐藏在类内部,不允许外部成员直接访问,而是通过该类提供的方法来实现对隐藏
信息的操作和访问成员变量private,提供对应的get()和set()方法。
构造方法是一种特殊的方法
作用:创建对象
格式:public class 类名{
修饰符 类名(参数){
}
}
1.构造方法的创建
1)如果没有定义构造方法,系统将会给出一个默认的无参构造方法。
2)如果定义了构造方法,系统将不再提供默认的构造方法。
2.构造方法的重载
如果自定义了带参构造方法,还要使用无参构造方法,就必须再写一个无参构造方法。
3.推荐的使用方式
无论是否使用,都手工书写无参构造方法。
我们先定义一个Company公司类
public class Company {
private String name;
private int number;
// public Company(){
// System.out.println("无参构造方法");
// }
public Company() {
}
public Company(String name) {
this.name = name;
}
public Company(int number) {
this.number = number;
}
public Company(String name, int number) {
this.name = name;
this.number = number;
}
public void show() {
System.out.println(name + "," + number);
}
}
接下来我们定义一个公司测试类
public class CompanyDemo {
public static void main(String[] args) {
Company c = new Company();
c.show();
Company c1 = new Company("字节跳动");
c1.show();
Company c2 = new Company(30);
c2.show();
Company c3 = new Company("腾讯", 40);
c3.show();
}
}
最后我们来讲一下标准类的制作,首先我们定义一个Student学生类,在该类中我们定义了两个成员变量name和age,并手工书写一个无参构造方法,接下来用set()和get()方法来设置和获取成员变量的值,最后通过学生测试类来测试代码是否无误。
public class Student {
//成员变量
private String name;
private int age;
//构造方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name + "," + age);
}
}
/*
标准类制作
*/
public class StudentDemo {
public static void main(String[] args) {
//无参构造方法创建对象后使用setXxx()赋值
Student s1 = new Student();
s1.setName("古力娜扎");
s1.setAge(30);
s1.show();
//使用带参构造方法直接创建带有属性值的对象
Student s2 = new Student("古力娜扎", 30);
s2.show();
}
}
今天的讲解到这里就告一段落了,在本次讲解中,我们首先讲到了类和对象的定义,其次我们讲到了对象的使用,还有成员变量和局部变量的区别,我们还讲了private和this关键字的概述和使用,最后我们讲了面向对象三大特征之一的封装,在接下来的几篇我会陆续讲到剩余的几大特征。好了,本次讲解就到这里了。创作不易,期待你的一键三连。