—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————
面向对象的概念:
讲功能封装对象,强调具备了功能的对象.面向对象是一种思想,讲复杂问题简单化,是一个指挥者.
例子:
对于面试,我就对象,拥有编程的专业能力
人开门 名词提炼法封装对象
//人 门 两个对象
人{
开门(门){
门.开();//人是指挥者,调用门打开自己的方法
}
}
门{
开(); //门拥有自己打开的方法
}
/*
模拟人开门
*/
class Demo1
{
public static void main(String[] args)
{
//名词提炼法: 人 门
/*
人{
开门(new门){
门.开();//指挥门对象,调用它自己的开方法
}
}
门{
开(){
}
}
*/
}
}
//面向对象有三个特征: 封装, 继承, 多态
类和对象的关系
类:对现实生活中事物进行描述
对象:就是这类事物,实实在在存在的个体
简单说:类是对象的模板,对象是类的实例
现实生活中的对象: 张三,李四
想要描述 :提取对象中的共性内容,对具体的抽象
描述时:这些对象的共性有:姓名,年龄,性别,具备学习的功能
映射到java中,描述时就是class定义的类
具体对象就是java在堆内存中用new关键字建立的实体
汽车类
图纸(类=模板)
小车(对象=实例)
//类成员就是成员变量和成员函数
成员变量与局部变量的不同:
1.作用域:成员变量作用于类,局部变量作用于函数,或者语句中
2. 在内存中:成员变量在堆内存中,具有默认值,局部变量在栈内存中,只能初始化才可以使用
可以在本类中创建本类对象,和主函数
程序唯且只有一个主入口即可
匿名对象:
是对象的简写格式,例如:new car();
使用方式:
当对象的方法只调用一次时,可以用匿名对象来完成,这样比较简化
用匿名对象作为参数传递.
封装:
隐藏对象的具体实现细节,对外提供公开的访问方式.
封装的好处:
1.讲变化隔离
2.便于使用
3.提高重用性
4.提高安全性
封装的原则:
1.把不需要对外提供的内容都隐藏起来
2.把属性都隐藏,提供公共方法对其访问
private:私有的,权限修饰符,用于类中成员,代表成员本类中有效,需要对外提供访问方法
一个属性对象set get方法
注意:私有仅仅是封装的一种表现形式
之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句,
对语句的数据进行判断,提高代码的健壮性
构造函数:
对象一建立就会调用与之对应的构造函数
特点:
1.函数名与类名一样
2.不用定义返回值类型
3.不可以写return语句
作用:给对象进行初始化
构造函数的小细节:
当一个类中没有定义构造函数时,那系统会默认给该类加入一个无参构造函数
当类中有自定义构造函数,系统默认的构造函数就没有了.
调用空参数new 实体就会报错
一个类可以有多个构造函数,重载即可
构造函数和一般函数在写法,运行上也有不同
构造函数一建立就会运行,一般方法就是对象调用才会执行
一个对象建立构造函数只会执行一次,一般函数只要调用就可以执行
什么时候定义构造函数呢?
当分析事物时,该事物一存在就具备一些特性或者行为,那么
就将这些内容建立在构造函数中
构造代码块
作用:给对象初始化的
对象一建立就运行,且优先于构造函数执行
和构造函数的区别:
构造代码块给所有的对象进行统一初始化
而构造函数是给对应的对象初始化的
构造代码块中应写不同对象共性的初始化内容
this关键字
this代表它所在函数所在的引用,简单说:那个对象在调用this函数,this就
代表哪个对象
this关键字的基本应用:
1.当定义类中功能时,该函数内部需要用到此函数的对象时,这时用this
关键字表示这个对象
2.但凡本类功能内部使用了本类对象,都有this关键字表示
3.this关键字应用与构造函数之间互相调用
4.this用来解决成员变量和局部变量的命名冲突
/*
类 与 对象
*/
class Demo2
{
public static void main(String[] args)
{
Car c=new Car();//实例化一个空白汽车对象
c.show();
Car c1=new Car("蓝色");//实例化一个带颜色的汽车对象
c1.show();
Car c2=new Car("红色",4); //实例化一个带颜色,轮胎数的汽车对象
c2.show();
boolean b=c2.compare(new Car("白色",4));//匿名对象传参 比较两车轮胎数是否相等
System.out.println("比较结果:"+b);
}
}
/*小车类*/
class Car
{
/*构造代码块 随着对象一建立就运行*/
{
System.out.println("我们汽车都用会跑");
}
/*属性的private,对外提供公共的访问方式,加入逻辑判断语句,提高代码健壮性*/
private String color;//小车颜色
private int num; //小车轮胎数
/*空参数构造函数*/
public Car(){
}
/*带颜色的构造函数*/
public Car(String color){
this.color=color; //解决成员变量与局部变量的命名冲突
}
/*带颜色,轮胎数的构造函数*/
public Car(String color,int num){
this(color); //this 实现构造函数互相调用
this.num=num;
}
/*设置颜色 set */
public void setColor(String color){
this.color=color;//this关键字 代表调用这个本类对象,调用它的对象
}
/*获取颜色 get */
public String getColor(){
return color;
}
/*设置轮胎数 set num必须>=4,否则默认num=4*/
/*属性的private,对外提供公共的访问方式,加入逻辑判断语句,提高代码健壮性*/
public void setNum(int num){
if(num>=4)
this.num=num;
else
this.num=4;
}
/*获取轮胎数 get*/
public int getNum(){
return num;
}
/*比较轮胎数与别的汽车是否相同*/
public boolean compare(Car c){
return this.num==c.getNum();
}
/*汽车信息输出类*/
public void show(){
System.out.println("颜色:"+color+"轮胎数:"+num);
}
}
注意: this只能放在构造函数第一行
this不能出现在普通函数上
不能出现两个函数之间互相调用的情况
—————————— ASP.Net+Android+IOS开发、.Net培训、期待与您交流!——————————