A:区别:
面向过程关注执行过程,这个时候我们是执行者。
面向对象关注的是最终功能,这个时候我们是指挥者。
B:联系:.
**面向对象是基于面向过程的。
A:面向对象思想的特点。
是符合人们思考习惯的一种思想。
编程思想就是来源于生活。
将复杂的问题简单化了。
**把我们从执行者变成了指挥者。
B:举例
**我去面试,boss调用了我的写程序的功能,不需要自己去做。
**找女朋友洗衣服、做饭。
C:请给我解释面向对象的思想。
**先说特点
**举例说明这些特点
找对象,完成功能。
如果对象不存在,自己就造一个对象。
A:封装
B:继承
C:多态
此外面向对象还有个一个特性------->抽象!
是对现实世界事务的抽象。
A:类就是一类事物的抽象。
是该类事物具体的存在个体。
A:现实生活中我们用属性和行为来描述一个事物。
B:这个时候我们就可以用属性和行为来描述一个类
那么,他们在类中分别对应什么呢?
**属性 -- 成员变量 (属性)--------------->整个类中有效
**行为 -- 成员方法 (函数,功能)------>整个类中有效
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。
B:使用对象
如果你想使用类中的方法和属性,你必须通过类的实例(对象)来调用。
调用方式:
对象名.属性;
对象名.方法名(参数列表);
成员变量作用于整个类。
局部变量只作用于它所属的范围(函数,语句);
成员变量存储在堆内存中,是属于对象的,随着对象的存在而存在,随着对象的消失而消失。
局部变量存储在栈内存中,是属性它所属范围的,使用完立即被释放。
成员变量都有默认初始化值。
**整型 0
**浮点型 0.0
**字符型 ‘\u0000‘ 空字符
**布尔型 false
**字符串 null
局部变量没有默认值,要想使用,必须遵循:
先定义(声明),再赋值,最后使用。
没有名字的对象。是对象的一种简写形式。
A:该对象只执行一次方法的调用。多次调用必须起名字!
**new Car().start();
B:可以作为实际参数传递
**public static void method(Car c){}
**method(new Car());
把实现细节隐藏,提供公共的访问方法。
任何对象或者系统都应该有一个明确的边界,边界内部的改变对外部没有影响,在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:构造方法的注意事项
**自定义类中如果没有构造方法,系统会默认给出一个无参构造方法。
**如果你给定了构造方法,系统将不再提供无参构造方法了。
***如果给定的有无参构造方法,你可以继续使用无参构造方法来创建对象。
***如果没有无参构造方法,你可以不使用。否则,就会报错。
**建议:每次我们都手动给出无参构造方法。
注意:带参构造方法也可以对成员变量进行赋值。
代表本类对象的一个引用
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
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;
}
}
原文:https://www.cnblogs.com/rookie-10/p/13519401.html