面向对象_this关键字

一、this关键字概述:   

    java中this关键字可以完成以下操作:
      1、调用类中的属性
      2、调用类中的方法或者构造方法
      3、表示当前对象

二、this代表当前的对象

  代表他所在函数所属对象的引用,简单的说就是哪个对象在调用this所在的函数,this就代表哪个对象

public class ThisDemo {
    public static void main(String[] args) {
        Person p=new Person();
        //p.setName("libushi");
        //System.out.println(p.getName());
        Person p1=new Person("haungjianfeng");

        Person p2=new Person("haungjianfeng",21);
    }
}
class Person{
    private int age;
    private String name;

    Person(){
        //System.out.println("A:name="+name+",,age="+age);
    }
    Person(String name){
        this();
        this.name =name;//哪个对象调用该函数,this就代表哪个对象
        //System.out.println("B:name="+name+",,age="+age);
    }
    Person(String name,int age){
        //this.name =name;
        //这个可以将上面的构造函数拿来用
        this(name);//这叫this语句,用于构造函数之间的调用     this语句只能定义在构造函数的第一行,因为初始化动作要先执行
        this.age=age;
        //System.out.println("C:name="+name+",,age="+age);
    }

    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }

    public void speak(){
        System.out.println("name="+name+",,age="+age);
        //System.out.println("name="+this.name+",,age="+this.age);//哪个对象调用他,this就代表哪个对象的name和age
    }
    public void cry(){
        System.out.println("cry.......");
    }
}
public class NinetyFive {
    public static void main(String[] args) {
        Bear b1 = new Bear("小白", ‘公‘);//这里创建对象,给对象初始化的时候调用类相应的构造函数,那么this就表示b1这个对象
        Bear b2 = new Bear();
    }

}
class Bear{
    private String name;
    private char sex;

    public Bear(){
        this("熊大");//调用下面的构造方法,必须在这个方法中的第一行(构造函数之间的往下调用)
    }
    public Bear(String name){
        this(name,‘公‘);//调用下面的构造方法(构造函数之间的往下调用)
    }

    public Bear(String name, char sex) {
        this.name = name;//调用类中的属性,表示当前对象的name,哪个对象调用this就表示哪个对象的name
        this.sex = sex;
        this.bite();//调用本类中的方法
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public char getSex() {
        return sex;
    }
    public void setSex(char sex) {
        this.sex = sex;
    }

    //咬人的方法
    public void bite(){
        System.out.println("我是"+sex+"熊--"+name);
    }

}

三、this的应用

  当类中要定义功能时,该函数内部要用到调用函数的对象时,这时用this来表示这个对象

    1、需求:定义一个功能,用于比较年龄是否相同

 1 public class ThisTest {
 2     public static void main(String[] args) {
 3         Person p1 = new Person(20);
 4         Person p2 = new Person(25);
 5         boolean b = p1.compare(p2);
 6         System.out.println(b);
 7     }
 8 }
 9 class Person{
10     private int age;
11     Person(int age){
12         this.age = age;
13     }
14     public boolean compare(Person p){
15         //可以用if else语句,也可以用三元运算符
16         return this.age==p.age;//this可以省略,加上阅读性比较好
17     }
18 }
时间: 2024-12-24 04:57:30

面向对象_this关键字的相关文章

10 面向对象(package关键字的概述及作用)

10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B:包的概述 举例: 学生:增加,删除,修改,查询 老师:增加,删除,修改,查询 - 方案1:按照功能分 com.heima.add AddStudent AddTeacher com.heima.delete DeleteStudent DeleteTeacher com.heima.update U

面向对象this关键字和概述和应用

面向对象this关键字和概述和应用 1 package thisdemo; 2 3 /** 4 * 面向对象this关键字和概述和应用 5 * 6 */ 7 8 //定义老师类 9 class Teacher { 10 private String name; 11 private int age; 12 13 //设置姓名值 14 public void setName(String n){ 15 name = n; 16 } 17 18 //获取姓名值 19 public String ge

JAVA面向对象-----super关键字

JAVA面向对象-–super关键字 1:定义Father(父类)类 1:成员变量int x=1; 2:构造方法无参的和有参的,有输出语句 2:定义Son类extends Father类 1:成员变量int y=1; 2:构造方法无参和有参的.有输出语句this.y=y+x; 3:创建Son类对象 Son son=new Son(3); System.out.println(son.y); //4 class Father { int x = 1; Father() { System.out.p

3.03_面向对象(static关键字及内存图)

* A:案例演示     * 通过一个案例引入static关键字.     * 人类:Person.每个人都有国籍,中国. * B:画图演示     * 带有static的内存图 lass Demo1_Static { public static void main(String[] args) { /*Person p1 = new Person();  //创建对象 p1.name = "苍老师";                   //调用姓名属性并赋值 p1.country

PHP中面向对象的关键字

php面向对象中常用的关键字有final.static.const (1)final: 1,final不能修饰成员属性 2,final只能修饰类和方法 作用: 使用final修饰的类不能被子类继承 使用final修饰的方法不能被子类去覆盖 用来限制类不被继承,方法不能被覆盖就使用final(2.)static: 1,使用static可以修饰成员属性和成员方法,不能修饰类 2,用static修饰的成员属性,可以被同一个类的所有对象共享 3,静态的数据是存在内存中的数据段中(初始化静态段) 4,静态

面向对象——this关键字

this关键字 作用:区分成员变量和局部变量同名的问题 方法中的局部变量和成员变量如果同名,在方法中打印该变量会遵循就近原则,不会去理会成员变量,如果在该变量前面加上this.的话,就会指向成员变量,this的作用就是哪个对象调用我就指向哪个对象. 面向对象的案例:判断两人是否为同龄人 l  描述人的类 package cn.itcast.this关键字; /*  * 定义人的类,描述年龄即可  */ public class Person {    //定义年龄    private int 

Chapter5_初始化与清理_this关键字

this关键字是Java中一类很特殊的关键字,首先它只能在方法内使用,用来表示调用这个方法的对象,在这一点上this和其他对对象的引用的操作是相同的.我们之所以可以在方法内部访问到它是因为编译器在方法调用时,会将调用方法的对象作为第一个参数传到方法里面.下面列举几个例子来对this的用途做一些总结. (1)作为返回值,返回当前对象的引用,在一条语句里对同一个对象做多次操作. 1 class leaf{ 2 int count; 3 4 public leaf(){ 5 count = 0; 6

52 面向对象static关键字的特点

static 关键字的特点 随着类的加载而加载 优先于对象存在 被类的所有对象共享 什么时候用Static静态? 如果某个成员变量是被所有对象共享的,那么它就应该被定义为静态的 共性用静态; 可以通过类名调用 其实它本身也可以通过对象名调用. 推荐使用类名调用 静态修饰的内容一般称为 与类相关的,类成员 static静态使用内存图 static 的注意事项 在静态方法中是没有this关键字的 如何理解 静态是随着类的加载而加载的 静态比对象优先存在 静态方法只能访问静态成员变量和静态的成员方法

面向对象---final关键字

final 在java中表示的意思是最终,也称为完结器,可以用final关键字声明类.属性.方法,在声明时需要注意以下几点: 1.使用final声明的类不能有子类. 2.使用final声明的方法不能被子类所覆盖. 3.使用final声明的变量即称为常量,常量不可以修改. 需要注意的是:final声明变量时,要求全部字母大写. 如果一个程序中的变量使用public static final 声明,则此变量为全局常量. 如:public static final String INFO="hello