`

this和static关键字,javadoc文档的产生

    博客分类:
  • j2se
 
阅读更多
----this和static关键字
public class Car
{
//属性,
static String brand="红旗";
String color;
double price;




public Car(String brand,String color,double price)
{
this(color,price);
this.brand=brand;

}

public Car(String color,double price)
{

this.color=color;
this.price=price;
}
public void show()
{
System.out.println("品牌:"+Car.brand+" 颜色:"+this.color+" 价格:"+this.price);
}


      
          public void show1()
{
System.out.println(颜色:"+this.color+" 价格:"+this.price);
}
        
public static void speed()
{
//this.name这是错的,静态的方法中不能调用非静态的东西,而非静态的方法里能调用静态的东西。
System.out.println(brand+"在加速,准备飞起来....");
}

public static void main(String[] args)
{

/*
Car qq = new Car("大众","白色",8000);//main方法也是静态方法,不能调用非静态的成员,但是这里不是调用非静态的成员,是创建了一个非静态的成员。
                                                     //比如在静态变量里放的brand属性,是在共享区创建了brand属性。归根结底,我是在共享区中的一个方法(main)中创建,共享区的这个方法中使用,我没出这个方法(main)以外的地方
qq.show();
qq.speed();

Car pst = new Car("黑色",40000);
pst.show();
                pst.show1();
pst.speed();
**/
          //这两个是类调用,把上面代码注销是为了验证类调用不用new对象,直接使用类名就行。类调用,调用的肯定是静态成员
Car.speed();//类调用静态方法
System.out.println(brand);//等价于System.out.println(Car.brand);类调用静态属性


}

}
-------------------------------------------
总结:
1.用static修饰的属性和方法,都会放在数据共享区,是在程序编译的时候进入数据共享区的。静态变量用类名.变量调用
2.当程序中属性用private修饰的时候,外界的类不能this.属性了,因为属性被那个类私有化了,但是那个类设置了公共的get、set
方法,因此外界类可以this.get方法
3.共享跟封装是对立的,因为封装是只能自己用。封装是把自己的属性和方法放在自己的对象里,用到this关键字(只是平时我们不写this关键字);
this关键字是指对一个数据的,因此this关键字不能放在共享区
4.public Car(String brand,String color,double price)的含义:
   1.后面的参数实际上就是在调用带有三个参数的构造方法。
   2. 写String brand是在数据共享区开辟了空间(因为他有static),写String color和double price是在堆内存中开辟了空间
   3.其实写String color和double price就是在写this.color=color(set方法),这里用到了this关键字;而写static String brand其实是在写Car.brand(类.属性),这里是因为brand用到了static关键字。因为这两个关键字的用法不同,因此写String brand时候在数据共享区开辟了空间,写String color,double price的时候在堆内存开辟了空间。
5.public static void main(String[] args)
{

//1.这句话打印出:大众,白色,8000
      Car qq1 = new Car("大众","白色",8000);
//2. 打印出大众,白色,40000,因为brand被共享了,第一次在上面用到了,所以第一次之后brand里面的值为大众,第二次不用在写 
              Car qq2 = new Car("白色",40000);
//3.这时候打印宝马,红色,66666,因为此时数据共享区的值(大众)被后面的新值覆盖了。
              Car qq3= new Car("宝马","红色",66666);
//4.打印宝马,白色,666666。因为这里的brand用的是数据共享区后来的新值
              Car qq4 = new Car("白色",40000);                                                
}
6.生产doc文档:cmd-->javadoc 类名.java
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics