1.类和对象
1.1什么是对象?
万物皆对象,客观存在的事物都是对象
1.2什么是面向对象?
关注对象的动作叫做面向对象
比如:我要去超市买水果,水果是一个对象,我关注它的种类、大小、酸甜的这个过程叫做面向对象
1.3什么是类?
类是对现实生活中一类具有相同属性和行为的事物的抽象。
类的特点:
1.类是对象的数据类型
2.类是具有相同属性和行为的一组集合
1.4什么是对象的属性?
属性:对象具有的各种特征,每个对象的每个特征都有特定的值。
1.5什么是对象的行为?
行为:对象能够执行的操作
1.6类和对象的关系
类:是现实生活中具有相同属性和行为的事物的抽象
对象:是能看得见摸得着的实体
类是对象的抽象
对象是类的实体
1.7类的定义
类的重要性:是Java程序的基本组成单位
类的组成:属性和行为
属性:在类中用成员变量体现(在方法外定义的变量)
行为:在类中用成员方法体现(去掉static关键字的方法)
类的定义步骤:
①定义类
②编写类的成员变量
③编写类的成员方法
例如:
手机类: 类名:手机
成员变量:品牌、价格
成员方法:打电话、发短信
public class phone {
//编写类的成员变量
String brand;
int price;
//成员方法
public void call(){
System.out.println("打电话");
}
public void sentMessage(){
System.out.println("发短信");
}
}
1.8对象的使用
①创建对象
格式:类名 对象名 = new 类名();
范例:phone p =new phone();
②使用对象
(1)给成员变量赋值:
格式:对象名.成员变量 = 变量值;
范例:p.brand="华为";
(2)调用成员方法
格式:对象名.成员方法;
范例:p.call();
案例:学生
需求:首先定义一个学生类,然后定义一个学生测试类,在学生测试类中通过对象完成 成员变量和成员方法的使用
分析:成员变量:姓名,年龄
成员方法:学习、做作业
public class student {
//定义成员变量
String name;
int age;
//定义成员方法
public void study(){
System.out.println("我爱学习");
}
public void doHomework(){
System.out.println("我在写作业");
}
}
/*
学生测试类
*/
public class studentDemo {
public static void main(String[] args) {
//创建对象
student s=new student();
//使用成员变量
System.out.println(s.name);
System.out.println(s.age);
s.name = "小白";
s.age = 22;
System.out.println(s.name);
System.out.println(s.age);
//使用成员方法
s.study();
s.doHomework();
}
}
2.成员变量和局部变量
2.1什么是成员变量和局部变量?
成员变量:是指在类中定义的在方法以外的变量
局部变量:方法中的变量
2.2成员变量和局部变量的区别
3.封装
3.1private关键字
①是一个权限修饰符
②能够修饰成员(成员方法和成员变量)
③作用是保护成员不被其他类使用,被private类修饰的成员只能在本类中才能访问
针对被private修饰的成员,如果需要被其他类使用,需要使用set变量名()和get变量名()方法
①set变量名()方法,用于设置成员变量的值,方法用public修饰
②get变量名()方法,用于获取成员变量的值,方法用public修饰
3.2private关键字的使用
/*
学生类
*/
public class student {
//定义成员变量
private int age;
String name;
//定义set方法
public void setAge(int a){
if(a<0||a>120){
System.out.println("您输入的年龄有误");
}else{
age=a;
}
}
//定义get方法
public int getAge(){
return age;
}
//定义成员方法
public void show(){
System.out.println(name+","+age);
}
}
/*
学生测试类
*/
public class studentTest {
public static void main(String[] args) {
//创建对象
student s = new student();
//使用成员变量并赋值
// s.age=30;
// s.age=-30;
s.name="张学友";
//使用成员方法
s.setAge(30);
// s.setAge(-30);
s.show();
}
}
3.3this关键字
①this关键字修饰的变量是成员变量
②什么时候使用成员变量?
当成员变量与局部变量重名时,即解决局部变量隐藏成员变量。
3.4封装
①封装概念
是面向对象的三大特性之一(封装、继承、多态)
客观世界组成的成员变量和成员方法是隐藏在对象内部的,外界是无法直接访问的
②封装原则
将类的某些信息隐藏在内部,不允许外部程序直接访问,只能通过该类提供的方法访问被private修饰的成员,如:setXXX()和getXXX()方法
3.封装好处
通过方法控制成员的操作,提高了代码的安全性
把代码进行封装,提高了代码的复用性
4.构造方法
4.1构造方法概述
作用:创建对象
功能:完成对象的初始化
格式: 修饰符 类名(参数){ }
修饰符一般用public
4.2构造方法的注意事项
1.当没有自定义构造方法时,系统会给出一个无参的构造方法
2.当给出构造方法时,无参构造方法就会消失
3.如果给出了有参的构造方法,如果需要无参构造方法需要自己定义
4.无论是否使用,都手动写一个无参构造方法
4.3标准类的制作
1. 成员变量 使用private修饰
2. 构造方法 提供一个无参的构造方法 提供一个带多个参数的构造方法 3. 成员方法 提供每一个成员变量对应的setxxx()/getxxx()方法 提供一个显示对象信息的show()
4. 创建对象并为其成员变量赋值的两种方式 无参构造方法创建对象后使用setxxx()赋值 使用带参构造方法直接创建带有属性值的对象
/*
学生类
*/
public class student {
//成员变量
private int age;
private int weight;
private String name;
private String classroom;
//构造方法
public student(){
}
public student(int age,int weight,String name,String classroom){
this.age=age;
this.weight=weight;
this.name=name;
this.classroom=classroom;
}
//成员方法setxxx()修改变量值
public void setAge(int age){
this.age=age;
}
public void setName(String name){
this.name=name;
}
public void setWeight(int weight){
this.weight=weight;
}
public void setClassroom(String classroom){
this.classroom=classroom;
}
//成员方法getxxx()获取变量值
public int getAge(){
return age;
}
public String getName(){
return name;
}
public int getWeight(){
return weight;
}
public String getClassroom(){
return classroom;
}
//创建一个show()方法
public void show(){
System.out.println(name+","+age+","+weight+","+classroom);
}
}
/*
学生测试类
*/
public class studentTest {
public static void main(String[] args) {
//创建对象
student s1=new student();
student s2 =new student(30,60,"小白","三年六班");
//给无参对象赋值
s1.setAge(30);
s1.setName("小刚");
s1.setWeight(80);
s1.setClassroom("三年二班");
//调用show()方法
s1.show();
s2.show();
}
}