面向对象
来源:互联网 发布:办公室网络安装 编辑:程序博客网 时间:2024/06/06 01:51
1:面向对象
(1)面向过程 强调过程,执行者
(2)面向对象 强调对象,指挥者
(3)面向对象思想的特点
A:它是一种更符合人们思考习惯的思想
B:它是复杂的内容简单化
C:它使我们从执行者变成了指挥者
请解释面向对象的思想?
定义一:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
定义二:面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统
(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不
一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。
面向对象方法从对象出发,发展出对象,类,消息,继承等概念。
面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;
软件重用性好。
(4)面向对象的特点
A:封装
B:继承
C:多态
2:类和对象
(1)类 对现实世界中事物的描述(属性和方法) Person p = new Person();
(2)对象 现实世界中实际存在具体的个体
(3)对象的使用以及内存图 new
3:局部变量和成员变量
(1)作用范围
局部变量:方法内
成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的}
(2)存储空间
局部变量:栈内存
成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}
(3)初始化值
局部变量:在使用前必须手动给值
成员变量:jvm默认初始化值。
class Person {
int num;
public void method(){
int age ;
//age = 10;
System.out.println(num);
}
}
4:匿名对象的使用(了解)
(1)当对对象中的功能只执行一次的时候使用。否则,请你使用有名字的对象。
Person p = new Person();
p.show();
p.show();
p.print();
new Person().show();
new Person().show();
new Person().print();
method(new Person());
(2)用于作为实际参数进行传递。
Person p = new Person();
method(Person pp){}
method(new Person());
method(p);
new Person();
public static void method(Person p){}
(3)是否可以用匿名对象调用属性,是否有意义?
可以调用,但是没有意义,因为调用后没有任何的引用指向,会直接变成垃圾
4:封装
(1)封装的好处:便于重复使用,安全性高。
(2)private权限修饰符
class Demo{
int age;//把属性私有对外提供公共的访问方法,可控性提高了
public void setAge(int age){//age = -20;
if(age>=0 && age<=200){
this.age = age;
}
else {
System.out.println("请回火星");
}
}
public int getAge(){
return age;
}/*
设置是setXxx要传参数
获取是getXxx要返回值类型,返回值类型和属性一致
*/
}
class DemoTest{
public static void main(String[] args) {
Demo d = new Demo();
d.setAge(-20);
System.out.println(d.getAge());
}
}
5:构造函数
class Person{
int age;
Person(int age){}
}
(1)用途:用于给对象中属性进行初始化。
A:格式类名(){code}Person(){}
B:Person(){}public Person(){}
(2)特点 你不定义空参数的构造函数,系统会自动给一个空参构造,你定义了构造函数无论是有参还空参的,
系统就不再给空参数的了。
(3)重载构造函数,是根据参数列表来区分是哪个构造函数
A:Person(){}//Person p = new Person();
B:Person(int age,String name){}
C:Person(int age){}
D:Person(String name,int age){}
注意:构造还可以用于给属性赋值。
class Person{
int age;
String name;
Person(){}
Person(int age,String name) {
this.age = age;
this.name = name;
}
public void speak(){
System.out.println(age + "....." + name);
}
}
class Demo{
public static void main(String[] args) {
//Person p = new Person(20,"zhangsan");
Person p = new Person();
p.speak();
}
}
6:this关键字
(1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。
(2)什么时候使用this呢?
A:当局部变量和成员变量重名的时候,可以用this进行区分。
B:写功能的时候,可能用到this。比如比较两个对象的年龄compare()
C:构造函数中使用this
**this() 必须放在第一行。
同下面的道理:
Person(String name){
this.name = name;
}
Person(String name,int age){
this("张三");//是找带一个字符串类型参数的构造方法
this.name = name;
this.age = age;
//this("zhangsan");
}
Person p = new Person("lisi",20);
7:代码块
(1)局部代码块 控制变量的生命周期{int x}
(2)构造代码块 每创建一次对象就执行一次。
(3)思考下面的问题
Person p = new Person();
它在内存中做了哪些事情?
A:将Person.class文件加载到内存中。
B:在栈内存中声明Person类型的变量P。
C:在堆内存中创建一个对象Person。分配地址值
D:把Person中的属性进行默认初始化。
E:把Person中的属性进行显示初始化。
F:调用构造代码块(如果没有,不执行这个操作)。
G:调用构造函数进行初始化。
H:把堆内存的地址(引用)赋给了栈内存中P。
public void method() {
{
int x = 10;
System.out.println(x);
}
}
class Person{
{
System.out.println("你好");
}
}
Person p = new Person();
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 面向对象
- 如何创建为单个分区创建索引
- Android搜索关键字飞入飞出效果
- CC_11_排序与查找
- POJ Intervals (最小费用最大流)
- 创建一个带有CheckBox的TreeView
- 面向对象
- 动态刷新ListView
- 一种VS2010配置OPENCV的方法
- 图的邻接表的建立 c++
- 找数组中第二大的数字
- [LeetCode] Median of Two Sorted Arrays
- 获取(多)屏幕尺寸--C++
- smail语法简析(1)
- POJ1426_Find The Multiple_测试出真知