Java 笔记 及 面向对象 成员变量与局部变量的区别 面向对象3大特征:这里只写了封装,构造函数 .this关键字

来源:互联网 发布:数据库附加错误602 编辑:程序博客网 时间:2024/05/02 15:41
一、面向对象
     1.面向对象及面向过程
        都是一种思想
面对过程:强调的是功能行为
         关注的问题是需要哪些步骤 
 程序=算法+数据

面对对象:强调的是具备了功能的对象
         关注的是解决问题需要找哪些对象  找对象。
                   程序=对象+消息


Java中面向对象三的特征:
            封装   继承  多态(抽象)
什么是对象:
            万物


Java程序中最基本的单位是类  在类中描述事物
        成员方法   就是事物的行为 先把static去掉   
成员变量  就是事物的属性  在类中   方法外


Car类与以前写的类不一样
   1.没有main函数,是因为可以通过
   2.变量的定义位置和原来不一样了
        放在方法里  是局部变量
放在类中方法外的是成员变量(全局变量——
class Demo3 
         {
String brand="小米";//属性
double  price=699.00;
public  void  call(){//行为
System.out.println("打的电话");
}
public void aendMessage(){
System.out.println("发消息");
}
public static void main(String[] args) 
{
    Demo3 c3=x;    
    Demo3 x=new Demo3();
                 x.call();
x.aendMessage();
System.out.print( x.brand+" \r\n"+x.price);
}
}


    成员变量与局部变量的区别
      1.在类中位置不同
             成员变量:类里面  方法外
    局部变量:方法中
      2.在内存中的位置不同
             成员变量:在堆内存(成员变量属于对象,对象进堆内存)
    局部变量:在栈内存(局部变量属于方法。方法进栈内存)
      3.生命周期不同
             成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
      4.初始值不同
              成员变量:有默认初始值
     局部变量:没有默认初始值。必须定义  赋值  才能使用


     成员变量:在方法外的堆中的对象 有默认值
     局部变量:在方法类的栈中的方法  无默认值


                  基本数据类型
     整型:--->0
     char:----->\u0000
     浮点------>0.0
     boolean----->false


  引用数据类型:
      默认的初始值为null


当成员变量和局部变量发生重名是  就近原则 


方法的形式参数是类名的时候  如何调用
//如果你看到了一个方法参数列表是类类型的这里其实需要传的是该类对象


匿名对象的概述和应用
没有名字的对象


面向对象3大特征:
一、封装
     1.封装
     广义:类和方法定义本身,就是封装性的体现
     狭义:private+set/get方法
           是指对象的属性和实现细节,仅对外提供公共的访问方式


class  Demo4
{
String name;
private  int age;
//private 私有  被私有修饰的成员  只能在当前类中使用
//private  只是一种封装形式,不等于封装
public void setAge(int a){//set 存入
  if (a>0  && a<=200)
  {
  age=a;
  }else{
  System.out.print("不行");
  }
}
public void speak(){
     System.out.print(" sdasd");
}
public static void main(String[] args) 
{
Demo4 x=new Demo4();
x.name="张三";
x.setAge(20);
x.speak();
}
}
关键字特点:1.是个权限修饰符
            2.可以修饰成员变量和成员方法
   3.被其修饰的成员,只能在本类中被访问
当你将一个成员变量用private修饰后,如果想要在其他类中调用  需要提供对应的setxxx()   getxxxx()方法
      private仅仅是封装的一种体现形式,不能说封装就是私有
public 私有  被私有修饰的成员  只能在当前类中使用
      好处:
      1.隐藏实现细节,提供公共的访问方式
      2.提高代码/数据安全性
      3.提高代码的复用性
 2.构造函数(Constructor);
       什么是构造函数:构造器/构造方法  用来创建对象并给成员变量初始化的
       格式:访问权限:修饰符(可略) 没有返回值 方法名(和类名一模一样){
//方法体
}
特点:
1.方法名和类名相同(大小写也要相同)
2.没有返回值类型 连void 都没有
3.访问权限修饰符 可省略
4.没有具体的返回值 return
5.在创建对象的时候,jvm会给我们调用构造方法 构造方法不能用对象.调用
注意:
当自己写了构造方法 那么jvm将不再给你提供无参的构造方法了
如果想要写有参构造 那么 无参构造也写上
有参构造 只是多了一种对成员变量的赋值方式
   3.this关键字
     this.成员
属性:访问本类的成员属性
方法:访问本类的成员方法
this();
访问本类中的构造函数
this-->指的就是当前类对象的一个引用
//错误: 对this的调用必须是构造器中的第一个语句
/*
this.name = name;
this(name);
初始化的动作要先执行 如果初始化中还有初始化 那么先执行那个更细节的初始化
阅读全文
0 0