zoukankan      html  css  js  c++  java
  • day16 面向对象知识补充 构造器

    package com.atguigu.java1;
    /*
    * 类的结构之三:构造器(或构造方法、constructor)的使用             别把构造器误认为是方法的一种,它是一种独立的结构
    * construct:建设、建造。 construction:CCB constructor:建设者
    *
    * 一、构造器的作用:
    * 1.创建对象
    * 2.初始化对象的信息  比如给属性初始化。。。。。。
    *
    * 二、说明:
    * 1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
    * 2.定义构造器的格式:权限修饰符 类名(形参列表){}
    * 3.一个类中定义的多个构造器,彼此构成重载
    * 4.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器,so不能把下面的空参构造器注释掉,除非把所有显式构造器注释掉。
    * 5.一个类中,至少会有一个构造器。
    */
    public class PersonTest {
    public static void main(String[] args) {
    //创建类的对象:new + 构造器      Person()就是构造器
    Person p = new Person();

    p.eat();

    Person p1 = new Person("Tom");

    System.out.println(p1.name);


    }
    }

    class Person{
    //属性
    String name;
    int age;

    //构造器
    public Person(){
    System.out.println("Person().....");
    }

    public Person(String n){               //给name属性初始化
    name = n;

    }
    //
    public Person(String n,int a){
    name = n;
    age = a;
    }


    //方法
    public void eat(){
    System.out.println("人吃饭");
    }

    public void study(){
    System.out.println("人可以学习");
    }

    }

    构造器使用细节说明:

    /*
    * 1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
    * 用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
    *
    * 2.练习2:
    * 2.1. 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
    * 2.2. 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。

    *
    */
    public class Person {

    private int age;
    private String name;

    public Person(){
    age = 18;
    }

    public Person(String n,int a){
    name = n;
    age = a;
    }


    public void setAge(int a){
    if(a < 0 || a > 130){
    // throw new RuntimeException("传入的数据非法!");
    System.out.println("传入的数据非法!");
    return;
    }

    age = a;

    }

    public int getAge(){
    return age;
    }

    //绝对不要这样写!!
    // public int doAge(int a){
    // age = a;
    // return age;
    // }

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

    }

    /*
    * 在PersonTest类中实例化Person类的对象b,
    * 调用setAge()和getAge()方法,体会Java的封装性。
    *
    */
    public class PersonTest {
    public static void main(String[] args) {

    Person p1 = new Person();
    // p1.age = 1;编译不通过

    p1.setAge(12);

    System.out.println("年龄为:" + p1.getAge());

    // p1.doAge(122);


    Person p2 = new Person("Tom", 21);
    System.out.println("name = " + p2.getName() + ",age = " + p2.getAge());

    }
    }

  • 相关阅读:
    致命错误 RC1121: RC : fatal error RC1121 : I/O error reading file
    Windows 右键 添加 “使用CMD打开”
    C2061: syntax error : identifier &apos;THIS_FILE&apos;
    delphi 产生随机数
    使用Code::Blocks编译VC程序
    Delphi中用来截取字符的函数,以及使用方法
    VC6.0 最新的 SDK platform sdk xpsp2 官方下载地址
    ubuntu下codeblocks起步
    VC中Error spawning cl.exe错误的解决方法
    Delphi如何获取时间月份
  • 原文地址:https://www.cnblogs.com/wangyanbin2333/p/13463219.html
Copyright © 2011-2022 走看看