2021-05-23

一.类的定义与使用

class 类名称 {
         属性 (变量) ;
         行为 (方法) ;
}

类属于一种数据类型,要依靠对象使用

类名称 对象名称 = new 类名称 () ;
或
类名称 对象名称 = null ;
对象名称 = new 类名称 () ;

例如:

 import java.util.*;
class Fruit { 
    String name ;
    String taste ;
    public void get() {
        System.out.println("这个" + name + ",味道是" + taste+",买它,买它");
    }
}
public class Testfruit {
        public static void main(String args[]) {
            Fruit fru = new Fruit() ;
            fru.name = "苹果" ;
            fru.taste = "甜的" ;
            fru.get() ;
        }
}

运行结果:

这个苹果,味道是甜的,买它,买它

二.构造方法
关于构造方法要明白的几点内容:
1.构造方法可以在类实例化的过程中做一些初始化的工作。
2.构造方法的名称必须与类的名称相同,并且没有返回值。
3.每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认的构造方法。
举个例子:

import java.util.*;
public class Dog{
    String name;
    int age;
    Dog(String name1, int age1){
        name = name1;
        age = age1;
        System.out.println("Hello 我是狗!!!");
    }
    void bark(){
        System.out.println("汪汪");
    }
    void hungry(){
        System.out.println("主人,我饿");
    }
    public static void main(String arg[]){
        Dog myDog = new Dog("花花", 1);
        String name = myDog.name;
        int age = myDog.age;
        System.out.println("狗的名字是"+name+";狗年龄是"+age);
        myDog.bark();
        myDog.hungry();
    }
}

运行结果:

Hello 我是狗!!!
狗的名字是花花;狗年龄是1
汪汪
主人,我饿

这个例子中要注意:
构造方法,没有返回值
普通方法,必须有返回值
创建对象时传递的参数要与构造方法参数列表对应

三.this
1.关键字this,通俗的讲,就是我们普通话中的“我”,指当前对象自己。

public class Hello { 
    String s = "Hello"; 
    public Hello(String s){ 
        System.out.println("s = " + s); 
        System.out.println("1 -> this.s = " + this.s); 
        this.s = s; 
        System.out.println("2 -> this.s = " + this.s); 
    } 
    public static void main(String[] args) { 
    Hello x=new Hello("HelloWorld!"); 
    } 
}

运行结果:

s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
[Process completed - press Enter]

分析:
这和我所学的c++非常相识,当参数与成员变量名相同时,如this->x=x,不能写成 x=x。

第一行就是直接对构造函数中传递过来的参数s进行显示的结果; 第二行是对成员变量s的显示;第三行是先对 成员变量s 赋传过来的参数s值后再显示。
2.把this作为参数传递

public class A { 
  public A() { 
    new B(this).print(); 
  } 
  public void print() { 
    System.out.println("Hello from A!"); 
  } 
} 
public class B { 
  A a; 
  public B(A a) { 
    this.a = a; 
  } 
  public void print() { 
    a.print(); 
    System.out.println("Hello from B!"); 
  } 
} 

运行结果:

  Hello from A! 
  Hello from B! 

分析:
对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。
四.总结
这一周我学习了面相对象,收获颇多。同时也让我知道我有很多不足,很多要学习,要思考的地方。有了C++面向对象编程的基础,让我在学习JAVA中,省了不少力,这两个中有很多共同点。
另外,在学习的过程中,一定要动手做、试着写代码,而不是抱一本书,一个视频看看,一定要多写,要多写,这样才能有自己的理解,自己的思考,才能提高。在课后,要及时复习,多加理解,把所学的每一个代码在脑中像放动画一样播放一遍,这样学习非常有效果。
在学习中遇到困难,不懂的地方,要尽量独立解决,上网查资料,这样会印象很深,也会记得更牢。
好了,这一周就结束了,继续努力吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值