万物皆对象,客观存在的事物都是对象
1.2什么是面向对象?
关注对象的动作叫做面向对象
比如:我要去超市买水果,水果是一个对象,我关注它的种类、大小、酸甜的这个过程叫做面向对象
类是对现实生活中一类具有相同属性和行为的事物的抽象。
类的特点:
1.类是对象的数据类型
2.类是具有相同属性和行为的一组集合
属性:对象具有的各种特征,每个对象的每个特征都有特定的值。
行为:对象能够执行的操作
类:是现实生活中具有相同属性和行为的事物的抽象
对象:是能看得见摸得着的实体
类是对象的抽象
对象是类的实体
类的重要性:是Java程序的基本组成单位
类的组成:属性和行为
属性:在类中用成员变量体现(在方法外定义的变量)
行为:在类中用成员方法体现(去掉static关键字的方法)
类的定义步骤:
①定义类
②编写类的成员变量
③编写类的成员方法
例如:
手机类: 类名:手机
成员变量:品牌、价格
成员方法:打电话、发短信
public class phone { //编写类的成员变量 String brand; int price; //成员方法 public void call(){ System.out.println("打电话"); } public void sentMessage(){ System.out.println("发短信"); } }
①创建对象
格式:类名 对象名 = 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(); } }
成员变量:是指在类中定义的在方法以外的变量
局部变量:方法中的变量
①是一个权限修饰符
②能够修饰成员(成员方法和成员变量)
③作用是保护成员不被其他类使用,被private类修饰的成员只能在本类中才能访问
针对被private修饰的成员,如果需要被其他类使用,需要使用set变量名()和get变量名()方法
①set变量名()方法,用于设置成员变量的值,方法用public修饰
②get变量名()方法,用于获取成员变量的值,方法用public修饰
/* 学生类 */ 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(); } }
①this关键字修饰的变量是成员变量
②什么时候使用成员变量?
当成员变量与局部变量重名时,即解决局部变量隐藏成员变量。
①封装概念
是面向对象的三大特性之一(封装、继承、多态)
客观世界组成的成员变量和成员方法是隐藏在对象内部的,外界是无法直接访问的
②封装原则
将类的某些信息隐藏在内部,不允许外部程序直接访问,只能通过该类提供的方法访问被private修饰的成员,如:setXXX()和getXXX()方法
3.封装好处
通过方法控制成员的操作,提高了代码的安全性
把代码进行封装,提高了代码的复用性
作用:创建对象
功能:完成对象的初始化
格式: 修饰符 类名(参数){ }
修饰符一般用public
1.当没有自定义构造方法时,系统会给出一个无参的构造方法
2.当给出构造方法时,无参构造方法就会消失
3.如果给出了有参的构造方法,如果需要无参构造方法需要自己定义
4.无论是否使用,都手动写一个无参构造方法
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(); } }