A:区别:
**强调的是功能行为,面向过程关注执行过程,这个时候我们是执行者。
**面向对象关注的是具备最终功能的对象,这个时候我们是指挥者,可以使问题简单化。
B:联系:.
**面向对象是基于面向过程的。
A:面向对象思想的特点。
**是符合人们思考习惯的一种思想。
***编程思想就是来源于生活。
**将复杂的问题简单化了。
**把我们从执行者变成了指挥者。
B:举例
**我去面试,boss调用了我的写程序的功能,不需要自己去做。
**找女朋友洗衣服、做饭。
C:请给我解释面向对象的思想。
**先说特点
**举例说明这些特点
D:分析对象方法--->名词提炼法。也就是说名词都可以看作是具有功能的对象。
E:以后的开发过程,其实就是在找对象,没有对象就创建一个对象;
流程 找对象--->建立对象------>使用对象------>维护对象的关系。
找对象,完成功能。
如果对象不存在,自己就造一个对象。
A:封装
B:继承
C:多态
此外面向对象还有个一个特性------->抽象!
是对现实生活事物的抽象。
A:类就是这类事物的抽象。
是该类事物具体的存在个体。
A:现实生活中我们用属性和行为来描述一个事物。
B:这个时候我们就可以用属性和行为来描述一个类
那么,他们在类中分别对应什么呢?
**属性 -- 成员变量 (属性)--------------->对应类中的变量,整个类中有效
**行为 -- 成员方法 (函数,功能)------>对应类中的函数,整个类中有效
C:具体的对象,就是java存在堆内存中使用new建立的。
D:定义类就是在描述事物,就是定义属性和行为。
A:分析:
**首先分析这个类是个什么样的事物
**其次你就应该该事物具有哪些属性和行为
**把这个事物的属性和行为对应成我们类的成员变量和成员方法。
B:自定义一个电脑类
**属性 颜色,品牌,重量
**行为 开机,关机,上网
对应成类
//自定义电脑类
class Computer
{
String color;//颜色
String type;//品牌
double weight;//重量
public void start(){}//开机
public void stop(){}//关机
public void online(){}//上网
}
A:对象的创建
Student s = new Student();//创建一个Student的对象,并把它赋给了Student类型的s,其中s就是类型变量。
B:使用对象
如果你想使用类中的方法和属性,你必须通过类的实例(对象)来调用。
调用方式:
对象名.属性;
对象名.方法名(参数列表);
成员变量作用于整个类。
局部变量只作用于它所属的范围(函数,语句);
成员变量存储在堆内存中,是属于对象的,随着对象的存在而存在,随着对象的消失而消失。
局部变量存储在栈内存中,是属性它所属范围的,使用完立即被释放。
成员变量都有默认初始化值。
**整型 0
**浮点型 0.0
**字符型 '\u0000' 空字符
**布尔型 false
**字符串 null
局部变量没有默认值,要想使用,必须遵循:
先定义(声明),再赋值,最后使用。
没有名字的对象。是对象的一种简写形式。
A:该对象只执行一次方法的调用。多次调用必须起名字!
**new Car().start();
B:可以作为实际参数传递
**public static void method(Car c){}
**method(new Car());
C:使用匿名对象调用方法有意义,调用属性无意义。
把实现细节隐藏,提供公共的访问方法。
任何对象或者系统都应该有一个明确的边界,边界内部的改变对外部没有影响,在java中,类包含了数据和方法,将数据放到一个类中就构成了封装。他将变化的进行了隔离,这样大大的提高了程序的安全性,由于他提供了公共访问方式,我们只需要调用它的功能即可,这样就提高了代码的复用性(只关注功能不用在意具体实现),自然而然就方便使用了。我们只需要将类中的成员变量私有(在变量名前加private即可),并提供相对应的set和get方法。 机箱和主板的例子。
私有只是封装的一种体现,隐藏才算是封装。
A:将变化隔离。
B:便于使用。
C:提高重用性。
D:提高安全性。
A:private
**私有的
B:特点
**是一个权限修饰符。
**可以修饰成员,被修饰的成员只能在本类中访问。
C:一般用法
**一般用于将成员变量私有,提供公共的get,set方法进行访问。
自定义类 一般格式:
class Student{
private String name;
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
}
注意:set方法可用于对成员变量进行赋值。
创建对象,并进行初始化动作。
A:构造方法名和类名相同
B:没有返回类型
C:没有返回值
运行特点:对象创建时被调用。
A:格式区别
构造方法要求:方法名与类名相同,没有返回类型。
成员方法要求:记住函数的定义格式。
B:用途
构造方法用于创建对象,并初始化值。
成员方法用于完成一个功能。
C:什么时候被调用
构造方法一new就被调用。
成员方法时通过对象名来调用。
你想创建对象必须使用构造方法。
你想使用功能必须通过对象名来调用。
你想使用一个功能:首先创建对象,然后使用对象的功能。
A:构造方法名相同,参数不同。
B:构造函数的作用,用于给对象的初始化。
C:构造函数的小细节,当一个类中没有定义构造函数时,那么系统默认给该类加入一个空参数的构造函数。
当在类中自定义了一个构造函数后,默认的构造函数就没有了。
D:构造函数和一般函数的区别 构造函数和一般函数的写法不同;运行上也不相同,构造函数在对象一建立就运行,给对象初始化,且只能运行一次。 而一般函数是对象调用才执行,且可以调用多次。
***如果给定的有无参构造方法,你可以继续使用无参构造方法来创建对象。
***如果没有无参构造方法,你可以不使用。否则,就会报错。
**建议:每次我们都手动给出无参构造方法。
注意:带参构造方法也可以对成员变量进行赋值。
E:什么时候定义构造函数? 当分析事物是,该事物存在具备一些特性的行为,那么这些内容就定义在构造函数中。
作用:给对象进行初始化。定义的是不同对象共性初始化内容。
特点:对象一建立就运行,而且优先于构造函数执行。
构造代码块和构造函数的区别:构造代码块是给所有对象进行统一初始化;而构造函数是给相对应的对象初始化。
代表本类对象的一个引用
A:方法被哪个对象调用,该方法内的this就代表哪个对象。
A:局部变量隐藏成员变量
class Student{
private String name;
/*
public void setName(String n){
name = n;
}
*/
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
Student s = new Student();
s.setName("张三");
String str = s.getName();
System.out.println(str);
System.out.println(s.getName());
B:构造方法中使用this
This语句:用于构造函数之间进行相互调用;
This语句只能定义在构造函数的第一行,因为初始化要先执行。
class Student{
private String name;
private int age;
Student(){}
Student(String name){
this.name = name;
}
Student(int age){
this.age = age;
}
Student(String name,int age){
//this(name);//代表就是调用构造方法----构造方法中的调用方式
this.name = name;
this.age = age;
}
}
C:比较年龄
public boolean compare(Person p){
return this.age==p.age;
//return this.getAge()==p.getAge();//是可以的。
}
我们后面在自定义类的时候:
1:给属性赋值有几种方式
定义的时候给属性。
A:set赋值 开发都用set。
B:构造方法
2:提供一个无参构造
//自定义一个学生类
class Student{
private int age;//姓名
private String name;//年龄
Student(){}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age; //return this.age;
}
public void setName(String name){
this.name = name;
}
public void getName(){
return name;
}
}