Day12 构造方法、static关键字、代码块、继承

/**
 *
 *  构造方法--->是方法,但是它是一个特殊的方法
 *  什么特殊性呢?
 *      1)构造方法的方法名和类名相同
 *      2)没有具体返回值类型
 *      3)关键是连void都没有
 *
 *      构造方法是可以重载的!
 *
 *      构造方法的目的是什么呢? (作用呢)
 *      就是给成员变量赋值的
 *
 *      给成员变量赋值的方式:
 *              setXXX(局部变量)方法
 *              有参构造方法(局部变量...)
 *
 *
 */

//学生类
class Student{

       // private String name ; //成员变量
        //方法名和类名一致的
        //没有返回值类型,没有void
     public Student(){
         System.out.println("这是Student类的无参构造方法");
     }

       //带一个String类型的构造方法
    public Student(String name){//局部变量 name 需要传实际参数
       //  this.name = name ; //赋值了
        System.out.println("这是Student带一个String类型的有参构造方法,参数为"+name);
    }

    //带两个参数的有参构造方法
    public Student(String name,int age){
        System.out.println("这是Student带两个参数的有参构造方法,参数为"+name+"--"+age);
    }

    //带三个参数的构造方法
    public Student(String name,int age,String gender){
         //this.成员变量名 = 实际值
        //...赋值即可
        System.out.println("这是Student带两个参数的有参构造方法,参数为"+name+"--"+age+"---"+gender);
    }
}

public class ConstructorDemo {
    public static void main(String[] args) {

        //创建学生对象
        Student s = new Student() ;//无参构造方法
        //System.out.println(s); //地址值

        System.out.println("------------------------------");

        //创建第二个学生:有参构造方法
        Student s2 = new Student("高圆圆") ;

        System.out.println("------------------------------");

        //第三个学生对象
        Student s3 = new Student("高圆圆",42,"女") ;
    }
}

/**
 * 构造方法的使用的注意事项
 *  1)构造方法中,是没有返回值类型的,连void没有,不要随意定义构造方法..
 *  2)当前我们的写的一个类(非测试类)中,没有提供任何构造方法的时候
 *
 *  系统会默认给我们提供无参构造方法;所以我们这俩天每次在写的时候,没有任何构造
 *  方法,不会报错,但是我们学习了构造方法,以后永远给出"无参构造方法",继承中就会用到!
 *
 *
 *  3)如果我们给了其中的有参构造方法,此时系统不会在提供无参构造方法,那么如果你使用
 *  无参构造方法new 对象的话,就报错!,这也是为什么永远给出无参构造方法的原因之一!
 *
 *
 *
 *  给成员变量数据初始化----两种
 *      1)通过无参构造方法+setXXX()赋值,通过getXXX()获取值
 *      2)通过有参构造方法直接赋值,+getXXX()获取值
 */

 

//定义一个动物类
class Animal{

    private String name ;
    private int age ;

    //
    /*public void Animal(){//普通的成员方法

    }*/
        //无参构造方法
        public Animal(){ //public:表示这个无参构造方法访问权限足够大

        }

       //给了有参构造方法
        public Animal(String name,int age){//"tom",3
            //System.out.println("这是Animal类的有参构造方法");
            this.name = name ;//tom赋值成员变量name
            this. age = age ; //3 赋值给成员变量age
        }

        //setXXX()/getXXX()
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    //其他成员方法
    public void eat(){
        System.out.println("动物都需要吃");
    }
    public void sleep(){
        System.out.println("动物都需要休息");
    }
}

public class ConstructorDemo2 {
    //测试类---作用:测试其他类的:通过创建对象访问这个类的内容


    public static void main(String[] args) {
        //创建动物类对象
        Animal animal = new Animal() ;//通过无参构造方法创建对象


        //两种方式去使用即可!
        //无参构造方法+setXXX()和getXXX()去使用
        animal.setName("小白") ;
        animal.setAge(5);
        System.out.println("动物的名字是:"+animal.getName()+",年龄是"+animal.getAge());
        animal.eat() ;
        animal.sleep();

        System.out.println("--------------------------------------------");
        //有参构造方法+getXXX()去使用
        Animal animal2 = new Animal("tom",3) ;
        System.out.println("动物的名字是:"+animal2.getName()+",年龄是"+animal2.getAge());
        animal2.eat() ;
        animal2.sleep();
    }
}

 

/**
 * 学生事物
 *                属性:姓名,年龄,性别,身高,爱好
 *             行为:学习,抽烟...
 */

//学生类
public class Student {

    //成员变量:属性私有化
    private String name ; //姓名

    private int age ; //年龄

    private String gender  ;//性别

    private String hobby ; //爱好

    private int high ;//身高

    //提供无参构造方法
   //快捷键:alt+ins+(f
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值