面向过程:强调的是过程(动作)
面向对象:强调的是对象(实体)
1.1、面向对象:将功能封装进对象,强调具备了功能的对象。
特点:
就是一种常见的思想,符合人们的思考习惯!
面向对象的出现,将复杂的问题简单化
面向对象的出现,将曾经在过程中的执行者,变成了对象中的指挥者
特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
1.2 用java语言对现实生活中的事物进行描述。通过类的形式来体现的。
对象:其实就是该类事物实实在在存在的个体。
类:事物描述。
对象:该类事物的实例。使用new来创建。
代码:
class Car {
String name;
String color;
void run() {
System.out.println("CarName:" + name + "\tCarColor:" + color);
}
}
class CarDemo {
public static void main(String[] args) {
// 在计算机中创建一个car的实例。
Car c = new Car();
c.color = "red";
c.name = "BMW";
c.run();
}
}
1.3 成员变量和局部变量的区别:
a.成员变量定义在类中,整个类中都可以访问。
局部变量定义在函数,语句,局部代码块中,只在所属的区域有效。
b.成员变量存在于堆内存的对象中。
局部变量存在于栈内存的方法中。
c.成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。
d.成员变量都有默认初始化值。
局部变量没有默认初始化值。不能被public、private、static修饰。
类类型参数:
代码:
class Car {
int num;
String color;
void run() {
System.out.println(num + "\tCarColor:" + color);
}
}
class CarDemo {
public static void main(String[] args) {
Car c1 = new Car();
show(c1);
c1.run();
Car c2 = new Car();
show(c2);
c2.run();
}
public static void show (Car c) {
c.color = "blue";
c.num = 4;
}
}
1.4 匿名对象
匿名对象:没有名字的对象,其实就是定义对象的简写形式。
当对对象的方法只调用一次时,可以用简写成匿名,如果对一个对象进行多个成员调用,必须给这个对象起个名字。
匿名对象可以作为实际参数进行传递。
如:new Car().run();、show(new Car());
封装
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
将变化隔离。
便于使用。
提高重用性。
提高安全性。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
private :私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)。私有只在本类中有效。
注意:私有仅仅是封装的一种体现而已
将变量私有化以后,类以外即使建立了对象也不能直接访问。代码示例:
package cn.itcast.duixiang;
public class PersonTest {
public static void main(String[] args) {
Person p = new Person();
// p.age = - 20;
p.setAge(-20);
p.speak();
}
}
class Person {
private int age = 0; //私有化,其他类无法访问
int a = 0;
public void setAge(int a) {
if( a>0 && a<100 ) {
this.age = a;
} else {
System.out.println("age不符合实际");
}
}
void speak() {
System.out.println("age:" + age);
}
}
------- android培训、java培训、期待与您交流! ----------