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());

    }
    }

  • 相关阅读:
    BZOJ 1529 [POI2005]ska Piggy banks:并查集
    BZOJ 1370 [Baltic2003]Gang团伙:并查集【虚点】
    BZOJ 3624 [Apio2008]免费道路:并查集 + 生成树 + 贪心【恰有k条特殊路径】
    BZOJ 1660 [Usaco2006 Nov]Bad Hair Day 乱发节:单调栈
    BZOJ 2019 [Usaco2009 Nov]找工作:spfa【最长路】【判正环】
    BZOJ 1638 [Usaco2007 Mar]Cow Traffic 奶牛交通:记忆化搜索【图中边的经过次数】
    BZOJ 1641 [Usaco2007 Nov]Cow Hurdles 奶牛跨栏:新版floyd【路径上最大边最小】
    BZOJ 1673 [Usaco2005 Dec]Scales 天平:dfs 启发式搜索 A*搜索
    POJ2226-Muddy Fields-二分图*
    POJ2186-Tarjan-kosaraju-缩点
  • 原文地址:https://www.cnblogs.com/wangyanbin2333/p/13463219.html
Copyright © 2011-2022 走看看