A.类和对象
1.什么是对象:客观存在的事物
2. 什么是面向对象:关注的事物信息
3.类:现实生活中一类具有相同属性和行为的事物的抽象
类的特点: (1)类是对象的数据类型
(2)类是具有相同属性和行为的一组对象的集合
4. 什么是对象的属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
5.什么是对象的行为:对象能够执行的操作
6.类和对象的关系
类:现实生活中一类具有相同属性和行为的事物的抽象
对象:客观存在的事物(看得到摸得着)
7.类的定义
类的重要性:是Java程序的基本组成单位
类的组成:属性、行为
属性:在类中通过成员变量来体现(类中方法外的变量)
行为:在类中通过成员方法来体现(和前面的方法相比去掉 static 关键字即可)
类的定义步骤:
//定义类
public class Phone {
public static void main(String[] args){
/*
类的定义步骤:
(1)定义类
(2)编写类的成员变量
(3)编写类的成员方法
手机类:
类名:
手机(Phone)
成员变量:
String brand;
int price;
品牌:(brand)
价格:(price)
成员方法;
打电话:(call)
public static void call(){
}
发短信:(sendMessage)
public static void sendMessage(){
}
*/
}
public static void call(){
System.out.println("打电话");
}
public static void sendMessage(){
System.out.println("发短信");
}
}
8. 对象的使用
案例:学生
注意:类定义完成之后无法直接使用,如果要使用,必须依靠对象
StudentDemo()通过对象s使用了Student()类
//将学生类和学生测试类放在同一个package中
//学生类(没有main方法)
package com.itheima_02;
/*
学生类:
*/
public class Student {
//成员变量:
String name;
int age;
//成员方法:
public void study(){
System.out.println("好好学习,天天向上!");
}
public void doHomework(){
System.out.println("键盘敲烂,月薪过万!");
}
}
//学生测试类(有main方法)
package com.itheima_02;
/*
学生测试类
*/
public class StudentDemo {
//因为是学生测试类,所以要有main方法
public static void main(String[] args){
//创建对象s 类名 对象名 = new 类名();
Student s = new Student(); //StudentDemo()通过对象s使用了Student()类(类定义完成之后无法直接使用,如果要使用,必须依靠对象)
//使用对象s 用了Student()类中的成员变量
System.out.println(s.name + "," + s.age);
s.name = "彭于晏";
s.age = 18;
System.out.println(s.name + "," + s.age);
//成员方法:
s.study();
s.doHomework();
}
}
B.对象内存图
1.对象内存图(单个对象)
2.对象内存图(多个对象)
C .成员变量和局部变量
成员变量:类中方法外
局部变量:方法内
区别:
D .封装
1.private 关键字
2. private关键字的使用
3. this 关键字
this.变量名 是成员变量
package myself_01;
//学生类
public class Student {
//成员变量:
private String name;
private int age;
//提供get/set方法
public void setName(String name){
this.name = name; //this.name的name是成员变量; 后面的name是局部变量
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age; //this.age的age是成员变量; 后面的age是局部变量
}
public int getAge(){
return age;
}
//显示:show方法
public void show(){
System.out.println(name + " , " + age);
}
}
package myself_01;
//学生测试类
public class StudentDemo {
public static void main(String[] args){
//创建对象
Student s = new Student();
//用set方法给成员变量赋值:
s.setAge(18);
s.setName("彭于晏");
//显示结果
System.out.println(s.getName() + " , " + s.getAge());
}
}
4. this内存原理
5.封装
E.构造方法
1. 构造方法概述
2.构造方法的注意事项
一个类中没有给任何构造方法,系统就会给出一个默认的无参构造方法
3. 标准类制作
package myself_02;
/*
成员变量:
使用private 修饰
构造方法:
无参构造方法
带多个参数的构造方法
成员方法:
每个成员变量对于的getXxx()/setXxx()
显示对象信息的show()
*/
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;
}
//显示对象信息的show()
public void show(){
System.out.println(name + " , " + age);
}
}
package myself_02;
//学生测试类
public class StudentDemo {
public static void main(String[] args){
//创建对象s1
Student s = new Student();
s.setName("彭于晏");
s.setAge(19);
s.show();
//创建对象s1并赋值
Student s1 = new Student("彭于晏",18);
s1.show();
}
}