学习目标:
第二章:面向对象基础
- 类和对象
- 对象内存图
- 封装
- 构造方法
目录
一、面向对象与面向过程的思想对比:
- 面向过程(POP):实现功能都是自己实现的
- 面向对象(OOP):通过只会对象实现具体功能
二、类:
类是对于一类具有共同属性和行为的事物概述
2.1类的组成
属性:该事物的各种特征(成员变量)
行为:该事物实现的功能(成员方法)
总结:类是对象的描述,对象是类的实体。
2.2类中对象使用
创建对象
格式:类名 对象名 = new 类名()
范例:Student s = new Student()
使用对象
1.使用成员对象
格式:对象名.变量名
范例:s.name
2.使用成员方法
格式:对象名.方法名
范例:s.study()
案例:手机类
需求:定义一个手机类,然后定义一个手机测试类,在手机测试类中通过对象完成成员变量和成员方法使用。
手机类
public class phone { //品牌,价格 String brand; int price; //打电话,发短信 public void call(String name){ System.out.println("给"+name+"打电话"); } public void sendMessage(){ System.out.println("群发短信"); } }
手机测试类
public class Testphone { public static void main(String[] args) { //1.创建对象 phone p = new phone(); //2.给成员变量进行赋值 p.brand = "大米"; p.price = 2999; //3.打印赋值后的成员变量 System.out.println(p.brand +"~"+ p.price); //4.调用使用方法 p.call("阿强"); p.sendMessage();
三、封装
3.1 private关键字的使用
一个标准类的编写
把成员变量用private修饰
提供对应的setXxx()/getXxx方法
私自类
public class Student { private String name; private int age; public void setName(String n){ name = n; } public String getName(){ return name; } public void setAge(int a){ age = a; } public int getAge(){ return age; } public void show(){ System.out.println(name + "~" +age); } }
检测私自累
public class TestStudent { public static void main(String[] args) { Student stu = new Student(); stu.setName("张三"); stu.setAge(23); System.out.println(stu.getName()); System.out.println(stu.getAge()); int age = stu.getAge(); for(int i = 1; i <= age; i++){ System.out.println("生日快乐"); } stu.show();//仅仅是对数据作出展示 } }
3.2 this关键字
this关键字的作用:可以调用本类的成员(变量、方法)解决局部变量和成员变量重名的问题
注意:方法被哪个对象调用,this就是代表哪个对象。
四、构造方法
4.1 格式
1.方法名与类名相同,大小一致
2.没有返回值类型,连void都没有
3.没有具体的返回值(不能由return带回结果数据)
4.2 作用
用于给对象的数据(属性)进行初始化
类
public class Student { private String name; private int age; public Student(String name, int age){ this.name = name; this.age = age; } public void show(){ System.out.println(name +"~"+ age); } }
Test类
public class TestStudent { public static void main(String[] args) { Student stu1 = new Student("张三",23); stu1.show(); } }
五、案例
需求:
1.成员变量使用private修饰
2.构造方法
提供一个无参构造方法
提供一个带多个参数的构造方法
3.成员方法
提供每一个成员变量对应的setXxx()/getXxx()
提供一个显示对象信息的show()
4.创建对象并成员变量赋值的两种方式
无参构造方法创建对象后使用setXxx()赋值
使用带参构造的方法直接创建带有属性值得对象
JavaBean类:封装数据
bakage
/* JavaBean类:封装数据 */ public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void show(){ System.out.println(name +"..."+ age); } }
Test
public class TestStudent { public static void main(String[] args) { //1.无参数构造方法创建对象,通过setXxx方法给成员变量进行赋值 Student stu1 = new Student(); stu1.setName("张三"); stu1.setAge(23); stu1.show(); //2.通过带参数的方法直接给属性 Student stu2 = new Student("李四",23); stu2.show(); } }