Java基础之五

 构造器

构造器的作用:创建对象

说明:如果没有显示定义构造器则系统默认,则系统默认共一个空参构造器

定义格式:权限修饰符   类名(形参列表){}

一旦显示提供构造器系统不在提供默认构造器了

package com.chenxi1.com;
/*构造器(constructor)
创建对象

 */
public class PersonTest {
    public static void main(String[] args){
        //创建对象:new+构造器
        person person1;
        person1 = new person();
        person1.ead();
        person1.study();
        person person2=new person("tamcat");
        System.out.println(person2.name);
    }

}
class person{
    //属性
    String name;
    int age;
    //构造器
    public  person(){
        System.out.println("gcfhjnk....");
    }
    public person(String a){
        name=a;
    }
    //方法
    public void ead(){
        System.out.println("吃饭");
    }
    public void study(){
        System.out.println("xuexi ");
    }
}

  测试

gcfhjnk....
吃饭
xuexi 
tamcat

Process finished with exit code 0

  实例2

package com.chenxi.exer;

public class TriAngle {
    private double base;
    private double height;
    public TriAngle(){

    }
    public  TriAngle(double a){
        base=a;
    }

//    public  TriAngle(double b){
//        base=b;
//    }
    public TriAngle(double a,double b){
        base=a;
        height=b;
    }
    public void setBase(double a){
        base=a;
    }
    public void setHeight(double b){
        height=b;
    }
    public double getBase() {
        return base;
    }

    public double getHeight() {
        return height;
    }
}


package com.chenxi.exer;

public class TriAngleTest {
    public static void main(String[] args){
        TriAngle san = new TriAngle(5.0,9.7);
        System.out.println(san.getBase());
        san.setBase(8.7);
        System.out.println(san.getBase());
    }
}

  测试

5.0
8.7

  属性赋值

1.默认初始化——————>显示赋值——————>构造器初始化————————>通过“对象.方法"或者对象.属性

JavaBean的概念

JavaBean是一种Java语言写成的可重用组件。
所谓javaBean,是指符合如下标准的Java类: 类是公共的 有一个无参的公共的构造器 有属性,且有对应的get、set方法
 用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以 用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP 页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用 户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关 心任何改变。

关键字this 的使用

在Java中,this关键字比较难理解,它的作用和其词义很接近。

 它在方法内部使用,即这个方法所属对象的引用;

 它在构造器内部使用,表示该构造器正在初始化的对象。

 this 可以调用类的属性、方法和构造器

当前对象

 什么时候使用this关键字呢?

 当在方法内需要用到调用该方法的对象时,就用this。 具体的:我们可以用this来区分属性和局部变量。 比如:this.name = name;

this 关键字得到使用
1.this 可以修饰:属性、方法、构造器
2.this 修饰属性和方法
this理解为当前对象或者当前正在创建的对象
在类方法中我们使用“this.属性”或者“this.方法”的方式,调用当前对象属性或方法,但是通常情况下。我们都选择省略“this”。特殊情况下如果方法堵塞形参和类的属性同名时。我们必须显示的使用“this.属性”的方式,表示此变量是属性,而非形参
在类的构造器中,我们可以使用“this.属性”或“this.方法”的方式,调用当前正在创建的对象属性或者方法。但是通常情况下,我们都选择省略“this.”。特殊情况,如果构造器的形参和类的属性同名时,我们必须显示使用“this.变量”的方式,表示此变量是属性而非形参
3.this关键字修饰或调用构造器
在类的构造器中,可以显示使用this(形参列表)方式,调本类中指定的其他构造器
构造器中不能“this(形参列表)”方式自己调自己
如果有N个构造器最多能调n-1个构造器中使用this关键字调其他构造器
规定“this(形参列表)”必须声明在当前构造器的首行
构造器内部不能同时调多个构造器

实例属性的this

package com.com.chenxi3.java;

public class PresonTest {
    public static void main(String[] args ){
        preson preson1=new preson();
        preson1.setAge(6);
        preson1.setName("tomcat");
        System.out.println(preson1.getAge());
        System.out.println(preson1.getName());
    }

}
class preson{
    private String name;
    private int age;
    public void setName(String name){
        this.name = name;//this关键字表示当前对象
    }

    public void setAge(int age) {
        this.age = age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return  age;
    }
}

  测试

6
tomcat

  构造器this关键字的使用

package com.chenxi1.com;
/*构造器(constructor)
创建对象

 */
public class PersonTest {
    public static void main(String[] args){
        //创建对象:new+构造器
//        person person1;
//        person1 = new person();
//        person1.ead();
//        person1.study();
//        person person2=new person("tamcat");
//        System.out.println(person2.name);
        person person3=new person("nginx",8);//创建对象
       // System.out.println(person3.name);
    }

}
class person{
    //private static final Object String = ;
    //属性
    String name;
    int age;
    //构造器
    public  person(){
        this.ead();
        System.out.println("gcfhjnk....");
    }
    public person(String a){
        this();//表示调空参构造器
        name=a;
    }
    public  person(String c,int b){
        this(c);//调有参数的构造器;
        age=b;
    }
    //方法
    public void ead(){
        System.out.println("吃饭");
    }
    public void study(){
        System.out.println("xuexi ");
    }
}

  测试

吃饭
gcfhjnk....

  实例2

类1

package com.chenxi1.com;

public class Boy {
    private String name;
    private int age;
    public Boy(){

    }
    public Boy(String name,int age){
        this.setAge(age);
        this.setName(name);
    }
    public void setName(String name){
        this.name = name;

    }
    public void setAge(int age){
        this.age = age;

    }
    public void set(int age,String name){
        this.setName(name);
        this.setAge(age);
    }
    public void marry(Girl girl){
        System.out.println("我想娶"+girl.getName());
    }
    public void shout(){
        if (this.age>=22){
            System.out.println("可以合法登记结婚了");

        }else {
            System.out.println("先多谈一下恋爱");
        }
    }

    public String getName() {
       // System.out.println(this.name);
        return this.name;
    }
}

  类2

package com.chenxi1.com;

public class Girl {

    private String name;
    private int age;
    public Girl(){

    }
    public Girl(String name,int age){
        this.name=name;
        this.age=age;
    }

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

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
    public void marry(Boy boy){
        System.out.println("我想嫁给"+boy.getName());
        boy.marry(this);

    }
    public int compare(Girl girl){
        if (this.age>girl.age){
            return 1;

        }else if (this.age<girl.age){
            return -1;

        }else {
            return 0;
        }
    }
}

  调用

package com.chenxi1.com;

public class BoyGirlTest {
    public static void main(String[] arge){
        Boy boy= new Boy("tomcat",21);
        Girl girl= new Girl("ami",22);
        boy.shout();
        girl.marry(boy);
    }
}

  测试

先多谈一下恋爱
我想嫁给tomcat
我想娶ami

Process finished with exit code 0

 

草都可以从石头缝隙中长出来更可况你呢
原文地址:https://www.cnblogs.com/rdchenxi/p/14559206.html