大数据<javaSE + Linux精英实训班>_day_11

1:面向对象 ->构造方法的引入
    
        以Person类为例,创建了人的对象的时候就要给他一个姓名和年龄,怎么做?
        
package com.itstar.demo1;
/*
 *     自定义的Person类,成员变量,name  age
 *     要求在new Person的同时指定好name与age的值
 *     实现功能,医用方法去实现,构造方法
 *     作用:在new的同时对成员变量赋值 对对象初始化的时候对new Person的age name赋值
 * 
 *     构造方法的定义格式
 *             权限 方法名(参数列表){
 *             
 *             }
 */
public class Person {
    private String name;
    private int age;
    
    
    // 创建构造方法
    public Person(String name,int age) {
        //System.out.println("我是一个空参的构造方法");
        this.name = name;
        this.age = age;
    }
    
    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;
    }
}
package com.itstar.demo1;

public class Test {
    public static void main(String[] args) {
        // 实例对象,调用空参的构造方法
        Person p = new Person("李四",20);
        
        System.out.println(p.getName());
        System.out.println(p.getAge());
    }
}

 

2:面向对象->构造方法的作用

        在创建对象的时候直接明确属性值
package com.itstar.demo02;
/*
 *   构造方法的重载
 */
public class Person {
    String name;
    int age;
    
    // 写空参的构造方法
    public Person() {
        
    }
    
    // 写有参的构造方法
    public Person(String name,int age) {
        this.name = name;
        this.age = age;
    }
    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;
    }
    
    
}
package com.itstar.demo02;

import javax.swing.plaf.synth.SynthSeparatorUI;

public class Test {
    public static void main(String[] args) {
        // 创建Person类的对象
        
        // 1.构造空参的构造方法,创建对象
        Person p = new Person();
        p.setAge(20);
        p.setName("李刚");
        
        System.out.println(p.getAge());
        System.out.println(p.getName());
        
        Person p1 = new Person("张三",25);
        System.out.println(p1.getAge());
        System.out.println(p1.getName());
    }
}

 

package com.itstar.demo03;
/*
 *    this可以在构造方法之间调用
 *    this.的方式,区分成员变量与局部变量之间的重名情况
 *    this在构造方法之间的调用,语法this()
 */
public class Person {
    String name;
    int age;
    
    // 无参构造
    public Person() {
        name = "李刚";
        age = 36;
        
        // 参数李刚 36 传递给了变量name  age
        // this("李刚",36);this的作用,在一个构造方法中,调用另外一个构造方法
        // 注意:this调用构造方法的时候要在第一行
    }
    
    // 有参构造 
    // 构造方法的目的就是new的时候可以直接为你的成员变量赋值
    public Person(String name,int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }
    
    
}    
package com.itstar.demo03;

public class Test {
    public static void main(String[] args) {
        // 创建Person对象
        Person p = new Person();
        // 创建构造参数的对象
        Person p1 = new Person("小鸡",24);
        
        System.out.println(p1.getName());
        System.out.println(p1.getAge());
    }
}

 

package com.itstar.demo04;

public class Person {
    int a = 1;
    String name;
    int age;
    
    
    public Person() {
        System.out.println("父类的构造方法");
        // 如果构造方法中有变量 走构造
        a = 5;
    }
    
    public Person(String name,int age) {
        this.name = name;
        this.age = age;
        System.out.println("父类的有参构造方法");
    }
}
package com.itstar.demo04;
/*
 *         子类中,super()的方法,调用父类的构造方法
 *         super()调用的是空参的构造方法
 *         super(参数) 调用的是父类的有参构造方法
 * 
 *     注意:
 *         子类构造方法第一行,有一个隐式代码super()
 *  public  String(){
 *  
 *  }
 */
public class Student extends Person{
    public Student() {
        // 走到父类中的构造类
        super("宙斯",20);
    }
}
package com.itstar.demo04;

public class Test {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.a);
        
    }
}

 

 

package com.itstar.demo05;
/*
 *   注意:构造方法中没有继承也没有重写的概念,构造的名字必须与类名相同
 */
public class Person {
    public Person(int a) {
        
    }
    
    public Person(double a) {
        
    }
}
package com.itstar.demo05;

public class Student extends Person{
    public Student() {
        super(2);
    }
    
    
}

 

断点调式:

package com.itstar.demo1;
/*
 *   断点调式:debug一下
 */
public class Test {
    public static void main(String[] args) {
        // 实例对象,调用空参的构造方法
        Person p = new Person("李四",20);
        
        System.out.println(p.getName());
        System.out.println(p.getAge());
    }
}

 

综合员工小案例(加入构造方法):

package com.itstar.demo06;

public class Person {
    public Person(int a) {
        
    }
}
package com.itstar.demo06;
/*
 *       构造方法的第一行写this(); 还是super();
 *      不能同时存在,任选其一。保证子类的所有构造方法可以调用父类的构造方法即可
 * 
 *     结论:无论如何,子类的所有构造方法,直接、间接调用到父类的构造方法
 *          子类的构造方法,什么都不写,默认构造方法的第一行就是super();
 *  
 */
public class Student extends Person{
//    public Student() {
//        // super();
//        this();  // this调用的是本类当中的构造方法
//    }
    
    public Student() {
        // 可以调用下面的构造方法
        this("kkk");
    }
    
    public Student(String s) {
        super(2);
    }
    
}

 

package com.itstar.demo07;

public class Person {
    private String name;
    private int age;
    
    public Person(String name,int age) {
        this.age = age;
        this.name = name;
    }

    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;
    }
    
    
}
package com.itstar.demo07;

public class Student extends Person{
    public Student(String name,int age) {
        super(name,age);
    }
}
package com.itstar.demo07;

public class Worker extends Person{
    public Worker(String name,int age) {
        super(name,age);
    }
}
package com.itstar.demo07;

public class Test {
    public static void main(String[] args) {
        // 创建对象  同时指定姓名和年龄
        Worker w = new Worker("喜羊羊",20);
        System.out.println(w.getName());
        System.out.println(w.getAge());
        
        System.out.println("----------------------------------------");
        
        Student s = new Student("小黑黑",5);
        System.out.println(s.getAge());
        System.out.println(s.getName());
    }
}

 

案例:

package com.itstar.demo08;
/*
 *      员工类:
 *         共性的提取
 *         姓名、编号、工作方法(抽象)
 */
public abstract class Employee {
    String name;
    String id;
    
    // 当new对象的时候可以就直接带上姓名和工号
    public Employee(String name,String id) {
        this.name = name;
        this.id = id;
    }
    
    public abstract void work();

    public String getName() {
        return name;
    }

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    
}
package com.itstar.demo08;

public abstract class Develop extends Employee{
    public Develop(String name,String id) {
        super(name,id);
    }
    
    //public abstract void work(); // 可以不写
}
package com.itstar.demo08;

public abstract class YunWei extends Employee{
    public YunWei(String name,String id) {
        super(name,id);
    }
}
package com.itstar.demo08;

public class JavaEE extends Develop{
    public JavaEE(String name,String id) {
        super(name,id);
    }
    
    public void work() {
        System.out.println(super.getId() + "---" + super.getName() + "---在打代码");
    }
}
package com.itstar.demo08;

public class Net extends YunWei{
    public Net(String name,String id) {
        super(name,id);
    }

    @Override
    public void work() {
        System.out.println(super.getId() + "---" + super.getName() + "--正在维护中..");
    }
    
    
}
package com.itstar.demo08;
/*
 *  测试:
 */
public class Test {
    public static void main(String[] args) {
        // 创建对象
        JavaEE ee = new JavaEE("李刚","开发部002");
        ee.work();
        
        Net n = new Net("贺喜","运维部006");
        n.work();
    }
}

 

转载于:https://www.cnblogs.com/guijin/p/8660461.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值