美文网首页
二、Java初级--9、构造函数

二、Java初级--9、构造函数

作者: cybeyond | 来源:发表于2018-03-12 11:15 被阅读0次

    构造函数(constructor):一种特殊的函数,用于初始化对象,在创建对象的时候会被自动调用
    默认构造函数:是指没有参数的构造函数,当我们不编写构造函数的时候,系统会自动生成默认构造函数。

    : 1、构造函数必须与类名相同,且不能有返回值,但不能加void
    2、构造函数可以有多个,多个构造函数参数不能相同
    3、当我们编写了有参数的构造函数后,系统不会生成默认构造函数

    结构
    package javastudy;
    
    public class Person {
        private String name;
        private int height;
            public Person() {  //构造无参数构造函数
            this.name="";
            this.height=0;
        }
        public Person(String name,int height){ //构造函数必须与类名相同,且不能有返回值,但不能加void
            this.name=name;
            this.height=height;
            }
        //getter
        public String getName()
        {
            return name;
        }
        public int getHeight()
        {
            return height;
        }
        public void show()
        {
            System.out.println("姓名:"+name+"身高:"+height);
        }
    }
    
    package javastudy;
    
    public class testit {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person z=new Person("zhang",170);
            z.show(); //通过z.name和z.height不能引用,因为是private
            Person x=new Person();  //无参引用时,需要在Person中构造无参构造函数
            x.show();
        }
    }
    
    执行结果

    下面的例子,新建Student类,Person类保持不变:


    结构
    package javastudy;
    
    public class testit {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person z=new Person("zhang",175);
            z.show();
            Person x=new Person();
            x.show();
            Student s=new Student();
            s.show();
        }
    
    }
    
    package javastudy;
    
    public class Student extends Person {
        private int score;
        public Student(){
        score=70;
        }
        public void show() {
            System.out.println("你的名字是:" +getName()+ "身高是:" +getHeight()+ "得分:" +score);
        }
    }
    
    执行结果

    上述引用的是默认构造函数,其实调用父类的null和0,如果想要将其设置为一定值,可以使用super

    package javastudy;
    
    public class Student extends Person {
        private int score;
        public Student(){
        super("hello",190);
        score=70;
        }
        public void show() {
            System.out.println("你的名字是:" +getName()+ "身高是:" +getHeight()+ "得分:" +score);  //score可以在testit中直接获得,但是不能被引用,如在testit中给对象重新赋值,因为是private;而继承的name和height需要使用getter才能获得,因为private继承后不能直接拿来使用
        }
    }
    
    

    使用构造函数带参数:

    package javastudy;
    
    public class Student extends Person {
        private int score;
        public Student(){
            super("hello",190);
            score=70;
        }
        public Student(String name,int height,int score){
            super(name,height);
            this.score=score;
        }
        public void show(){
            System.out.println("你的名字是:" +getName()+ "身高是:" +getHeight()+ "得分:"+score);
        }
    }
    
    
    package javastudy;
    
    public class testit {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person z=new Person("zhang",170);
    //      z.show();
    //      Person s=new Person();
    //      s.show();
            Student x=new Student();
            x.show();
            Student t=new Student("wang",175,70);
            t.show();
        }
    }
    
    执行结果

    相关文章

      网友评论

          本文标题:二、Java初级--9、构造函数

          本文链接:https://www.haomeiwen.com/subject/yslrfftx.html