[关闭]
@Sarah 2015-11-05T17:46:41.000000Z 字数 1870 阅读 1235

JAVA this new() 包 封装 继承

对象与类2
java笔记
对象的值都是对内存的引用

指向一个地址

类相当远模板

this.有两个用处
1 this()指上面的构造函数
2 this.x 指自己本身函数里的x

  1. public class Point {
  2. int x,y;
  3. private Point(){
  4. this(0,0);
  5. //指上面的构造函数 给里面的参数赋值了0,0
  6. }

This的使用

  1. public Point(int x,int y){
  2. this.x=x;
  3. this.y=y;
  4. 就是这个函数里x=x(因为不能写x=x所以前面加个this.)

1.在方法及构造方法中,使用this来访问字段及方法
• 例如,方法sayHello中使用name和使用this.name是相同的。即:

  1. void sayHello(){
  2. System.out.println("Hello! My name is " + name );
  3. }
  1. void sayHello(){
  2. System.out.println("Hello! My name is " + this.name );
  3. }

的含义是相同的。
2.使用this解决局部变量与域同名的问题
使用this还可以解决局部变量(方法中的变量)或参数变量与域变 量同名的问题。如,在构造方法中,经常这样用:
Person( int age, String name ) {
this.age = age;
this.name=name;
}
这里,this.age表示域变量(一开始定义的),而age(函数里的)表示的是参数变量。

3.构造方法中,用this调用另一构造方法
• 构造方法中,还可以用this来调用另一构造方法。如:

  1. Person( ) {
  2. this( 0, "" );
  3. }

• 在构造方法中调用另一构造方法,则这条调用语句必须放在第一句。

什么时候new?

是在类里new 还是在调用的main里new?
1在类里new的时候是为了开辟一个新的内存空间存数据(否则是null)

  1. Point p2 = new Point(6, 7);

2在main函数里new 是为了新建一个对象!

  1. Circle(int xx, int yy) {
  2. center=new Point(xx,yy);

什么时候点点儿?.

原来的.函数(新传进去的.XX)

  1. int relation(Circle c) {
  2. double distance = center.distance(c.center);
  3. //这里c.center指前面新传的c的圆心,而center.指的是原来就带的
  1. boolean equals (Line x){//x是形参
  2. // Line l1,l2,l3;
  3. // l1.equals(l2);//实参
  4. // l1.equals(l3);
  5. if (x.start.equals(start)&&x.end.equals(end)) {
  6. return true;
  7. }
  8. return false ;
  9. }
  10. //这里的x.start指新传进去的Line x里的x,start指的是原来的线的x
  1. boolean equals(Circle c2) { // 判断两个圆是否相等
  2. if (c2.center.x == center.x && c2.center.y == center.y && c2.radius == radius) {
  3. //c2.center.x指新传进去的c2的x, center.x指现在的x

文件夹,避免同名类不能定义的问题,类名前的包名可以进一步区分类名,
import

封装

public:函数可以跨包调用,变量不能
private:函数和变量都可以类内部调用
protected:忘了??
default:同一包里都能访问

继承

A extends B
子类------父类(超类、基类)
子类(subclass),父类或超类(superclass)

子类可以继承全部父类代码、可以在基础上梗概、增加代码
父类中同名函数:子类可以覆盖
父类中同名变量:子类可以隐藏

继承案例

  1. public class B {
  2. int x=10;
  3. void f(){
  4. System.out.println("ok!");
  5. }
  6. }
  1. public class A extends B{//A类继承自B类
  2. int x=20;
  3. void g(){
  4. System.out.println("in subclass");
  5. }
  6. void f(){
  7. System.out.println(super.x);
  8. System.out.println(x);
  9. }
  10. }
  1. public class Test {
  2. public static void main(String[] args) {
  3. // TODO Auto-generated method stub
  4. A a=new A();
  5. a.f();
  6. System.out.println(a.x);
  7. }
  8. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注