62 面向对象(概括)
面向对象是相对面向过程而言。
面向对象和面向过程都是一种思想。
面向过程:强调的是功能行为(行为,动作,功能);
面向对象:将功能封装进对象,强调具备了功能的对象;
面向对象是基于面向过程的;
就是把原来的封装起来了
63面向对象(举例)
一切皆对象,万物皆对象;没有对象造对象;
64类与对象的关系
人开门:名题提炼法
人{
开门(哪个门){ 门.开();====>门开的功能}
}
门{
开()(操作门轴等)
}
面向对象三个特点:封装、继承、多态。
以后的开发就是找对象,没有对象创建对象;
找对象、创建对象、使用对象、维护对象的关系;
类和对象的关系:类就是生活中事务的描述,对象就是这类事物,实实在在存在个体;
描述事物:其实就是在描述事物的属性和行为;
定义类:就是描述事物,就是定义属性和行为;
属性对应是类中变量,行为对应类中方法(函数),属性与行为共同成为类中的成员(成员变量,成员方法);
class Car{
String color="红色";
int num=4;
void run(){
System.out.println(color+"--------"+num)
}
}
class CarDemo{
public static void main(String[] args){
Car c=new Car();=====>创建一个对象
}
}
(Car)类型产生一个变量,变量指向一个对象,c就是类型变量指向对象;
new Car()====>产生一个对象
Car c = new Car();
类类型 变量--->对象
对象的特点用于封装数据(行为、属性)
65 面向对象(成员变量与局部变量)
主函数用于独立运行;
成员变量:作用于整个类中;
局部变量:作用于函数中或者语句中;
成员变量在堆内存中,因为对象的存在,才在内存中出现;
局部变量在栈内存中;
66 面向对象(匿名对象应用)
Car c=new Car();
c.num=5
------->new Car().num=5; 这个就是匿名对象;
匿名方法调用方法有意义,调用属性没意义;
匿名对象使用方式一
当对对象的方法只调用一次时,这样写简化,如果对一个对象进行多个成员调用,必须给这个对象起个名字;
匿名对象使用方式二
可以将匿名对象作为实际参数进行传递
等值操作
67 面向对象(封装)
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式;
好处:1.隔离了变化2.便于使用3.提高复用性4.提高安全行
封装原则:
1.将不需要对外提供的内容都隐藏起来;
2.把属性都隐藏,提供公共方法对其访问;
类---->包---->框架
68 面向对象(封装private)
private:私有,权限修饰类中的成员(成员变量、成员函数);
私有只在本类中有效;即使new了耶不能访问,提供了对应访问的方式
public void setAge(int a){
age=a;
}
public void getAge(){
return age;
}
一个成员变量通常会有两个访问方式(设置、获取)
封装不是私有的,私有仅仅是封装的一种表现形式,只要权限访问不带的都是封装;
之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码的健壮性;
69 面向对象(构造函数)
特点:1 函数名与类名一致;2 不用定义返回类型的; 3 不可以用return语句;
重点:只要对象一建立,就会调对应的已知函数;
构造函数的作用:可以给对象进行初始化;
构造函数的小细节:
1.当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数;
2.当类中自定义了构建函数后,默认的构造函数就没有了;
3.构造函数与一般函数在写法上有不同,在运行上也不同,构造是一建立就运行,给对象初始化,而一般方法是对象调用才执行,是给对象添加对象具备的功能;
4.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次;
5.什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中(初始化,忘里面传递就好了)
70 面向对象(构造代码块)
1.构造代码块:作用给对象进行初始化。
2.对象一建立就运行,并且优先于构造函数执行
3.与构造函数的区别:
构造代码块时给所有对象进行统一初始化;
构造函数是给对应的对象初始化;
class Person{
........................
{
cry(); ==========>单独的代码{}
}
}
构造代码块中定义的是不同对象共性的初始化内容;
71 面向对象(this 关键字)
构建函数可以被私有化,如果构造函数都私有化就不可能创建对象的
this 看上去是用于区分局部变量和成员变量同名情况
Person(string name){
this.name=name;
}
person p=new person("lisi")
this 就代表本类的对象
this 代表它所在函数所属对象的引用;(this 代表那个函数,简单的说 哪个对象调用this所在的函数,this就代表哪个对象)
输出
public void speak(){
system.out.println("name"+this.name+"......age"+this.age);
}
72面向对象(this关键字的应用)
this 的应用:当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this 来表示这个对象。
但凡本类功能内部使用了本类对象,都用this表示;
public boolean compare(Person p){
return this.age=age;
}
class PersonDemo3{
public static void main(String[] arg){
Person p1=new Person(20);
Person p2=new Person(25);
boolean b=p1.compare(p2)
System.out.println(b)
);
}
}
哪个类调用了这个方法,this就代表哪个类
73 this关键字在构造函数间的调用
this语句:用于构造函数之间进行相互调用;
用的时候传相对应的参数;
1.this语句只能构建函数的第一行;因为初始化要先执行
person(string name,int age){
this(name);//P(name)姓名初始化
this.age=age;
}
class PersonDemo4{
Person p=new Person("lisi",30);
}
一般函数不能直接调用构造函数
网友评论