• 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
    

     

    草都可以从石头缝隙中长出来更可况你呢
  • 相关阅读:
    [C#][控件]WebBrowser 使用范例
    [java]经验集
    [html][easyui]DataGrid 绑定
    [转]jQuery 读取 xml
    [转][html]大文件下载
    [转][javascript]判断传入参数
    [html][javascript] Cookie
    [bat]批处理删默认共享和清理垃圾
    [转]JavaScript RegExp 对象参考手册
    5个编程问题(1小时解决)
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/14559206.html
Copyright © 2020-2023  润新知