1.1 面向对象思想概述
面向过程的语言思想(c):当需要实现一个功能的时候,详细处理每个步骤
面向对象的语言思想(java):当需要实现一个功能时,不关系具体步骤,
举例洗衣服:
面向过程:把衣服脱下来–>找一个盆–>放点洗衣粉–>加点水–>浸泡10分钟–>揉一揉–>清洗衣服–>拧干–>晾 起来
面向对象:把衣服脱下来–>打开全自动洗衣机–>扔衣服–>按钮–>晾起来
区别:
面向过程:强调步骤。
面向对象:强调对象,这里的对象就是洗衣机。
特点:
面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。 面向对象的语言中,包含了三大基本特征,即封装、继承和多态。
1.2 类和对象
类:是一组相关属性和行为的集合,可以看做是一类事物的模拟,使用事物的属性特性和行为特征来描述该类事物
属性:该事物的状态信息;行为:该事物可做什么
类是抽象的,对象是具体的,类是对象的模板,对象是类的实例。
1.3 类的定义
java中用class描述事物:
属性(是什么):在java中叫成员变量
[例如]:int age;
行为(能做什么):在java中叫成员方法
[例如]:public void eat ()
{
}
先写成员变量,再写成员方法;
1.4对象的创建和使用
通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。
1.导包:也就是指出需要使用的类,在什么位置
import 包名称.类名称;
对于和当前类属于同一个包的情况,可以省略导包语句不写
2.创建
类名称 对象名= new 类名称();
3 使用 分两种情况
使用成员变量:对象名.成员变量名
使用成员方法: 对象名.成员方法名(参数)
public class test{
public static void main(String[] args)
{
Student stu=new Student();
stu.name="名字";
System.out.println(stu.name);
stu.eat();
}
}
类练习
phone.class
public class phone {
String brand;
double price;
String color;
public void call(String who)
{
System.out.println("给"+who+"打电话");
}
public void sendMessage()
{
System.out.println("群发短信");
}
}
demo.class
public class demo {
public static void main(String[] args)
{
phone one =new phone();
one.brand="apple";
one.color="bliac";
one.price=4999;
System.out.println(one.brand);
System.out.println(one.color);
System.out.println(one.price);
one.call("mingzi");
}
}
1.5 一个对象的内存图
成员方法保存的是地址值
两个对象使用同一方法
两个引用指向同一对象
1.6 使用对象类型作为参数
适用对象类型作为返回值
1.7 局部变量与成员变量
1 定义的位置不一样【重点】
局部变量:在方法内部
成员变量:在方法的外部,直接写在类当中
2 作用范围不一样【重点】
局部变量:只有方法当中才可以使用,出了方法就不能使用
成员变量:整个类中都可以使用
3 默认值不一样【重点】
局部变量:没有默认值,如果想要使用,必须进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样
4 内存位置不一样(了解)
局部变量:位于栈内存
成员变量:位于堆内存
5 生命周期不一样(了解)
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象创建而诞生,随诊对象垃圾回收机制而消失
1.8 封装性
四大特征:继承,多态,封装,抽象
封装的体现: 1 方法是一种封装;
2 关键字private是一种封装;
封装就是将一些细节信息隐藏起来,对于外界不可见,将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
private关键字:
1. private是一个权限修饰符,代表最小权限。
2. 可以修饰成员变量和成员方法。
3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。
使用格式:
private 数据类型 数据变量名;
//用private关键字将需要保护的成员变量进行修饰
//一旦使用了private进行修饰,那么本类当中仍然可以随意访问,但如果超出本类范围将不能使用
//如果要访问那么要在内部设置公有类函数
public class Person
{
private int age;
//专门用于向age设置数据
public void setAge(int num)
{
if(num<100&&num>0)
{
age=num;
}
else
{
System.out.println("error");
}
}
//专门用于获取age数据
public int getAge()
{
return age;
}
}
//间接访问private要有一对get、set函数
person.setAge(20);
private练习
//student java
/*
对于boolean类型要用ismale
*/
public class Student
{
private String name;
private int age;
private boolean male;
public void setMale(boolean b)
{
male=b;
}
public void setName(String str)
{
name=str;
}
public void setAge(int num)
{
age=num;
}
public boolean isMale()
{
return male;
}
public String getName()
{
return name;
}
public int getage()
{
return age;
}
}