java基础----面向对象(一)

面向对象

1.概念

类:对现实世界中事物的抽象。Student

对象:现实世界中具体的个体。张三、李四 这些具体的学生

面向对象的特征:抽象、封装、继承、多态

OOP: Object Oriented Programming  面向对象编程

类和对象的总结:

1、现实世界都是由很多对象组成的,基于对象的共同特征抽象出类。

2、对象:真实存在的对象

3、类中包含:

     1)所有对象所共有的特征--属性(静)

     2)所有对象所共有的行为--方法(动)

4、类是对象的模板,对象是类的具体实例。

5、一个类可以创建多个对象:同一个类的不同对象,结构相同,数据不同。

2.构造方法

  • 特点:1、方法名和类名一样  2、没有返回值

  • 构造方法:无参构造方法、有参构造方法

  • 无参构造方法:如果不写Java默认提供这样一个无参构造方法,如果自己写了,Java就不会提供了。

//java会默认提供一个无参构造方法
//如果自己构造了,就不提供了
    public Student(){
        System.out.println("Student.Student");
    }
  • 有参构造方法:

//   有参构造方法
    public Student(int id,String name,int age,String gender){
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
  • this

Student student = new  Student(1, "zhansgan", 20);

this.id = id;

this代表当前对象,把通过构造方法传递过来的值赋值给当前对象的id。

如果不写任何构造方法,系统默认提供一个无参数构造方法,只是我们看不到而已。

如果自己写了任何一个构造方法,系统就不会提供这个默认无参构造方法。

所以说如果自己写了一个带参数的构造方法,就要把无参数构造方法也要写上。

(后面使用或者学习的一些框架要new这个无参数的构造方法)

(只要你写了任何一个构造方法,不管有参没参,系统都不会给你提供默认无参构造方法)

构造方法和一般方法的不同:

1、构造方法是在new对象的时候运行,而一般的方法是在对象调用的时候才执行。

2、一个对象的建立,构造方法只执行一次,而一般方法可以被改对象调用多次。

相关代码:

Student.java

//实体类:和数据库表一一对应
public class Student {
    //属性 field :静态的描述这个事物的特征
//    private属性私有:访问范围是当前类
    private int id;
    private String name;
    private int age;
    private String gender;

//java会默认提供一个无参构造方法
//如果自己构造了,就不提供了
    public Student(){
        System.out.println("Student.Student");
    }

//   有参构造方法
    public Student(int id,String name,int age,String gender){
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }



    public Student(int id,String name,int age){
        //调用上一个构造方法的
        this(id,name,age,"女");//放在第一行

    }

//    实例方法   必须先new出一个对象   右击->Genrate->set and get
    public int getId() {
        return id;//return this.id
    }

    public void setId(int id) {
        //就近原则    id = id
//        this 当前new出来对象
        this.id = id;
    }

    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 String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
//Generate -> toString
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", denger='" + gender + '\'' +
                '}';
    }

//
        method
//        public String getInfo(){
//            return "Student[id:"+id+",name:"+name+",age:"+age+",gender:"+gender+"]";
//        }
//    }
}

Teacher.java

public class Teacher {
    private int id;
    private String name;
    private int age;
    private double salary;

    public int getId() {
        return id;
    }

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

    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 double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", salary=" + salary +
                '}';
    }
}

OOPDemo.java

import org.junit.Test;

//OOP面向对象编程
public class OOPDemo {
//    @Test
//    public void test1(){
//        Student student1 = new Student();
        student1变量、new出来的对象
//        student1.id = 1;
//        student1.name = "xxh";
//        student1.age = 21;
//        student1.gender="女";
//        System.out.println(student1.name);
//        System.out.println(student1.getInfo());
//    }
@Test
    public void test2(){
        Student student1 = new Student();
        student1.setId(1);
        int id = student1.getId();
        System.out.println(id);
        System.out.println(student1);


        //
        Student student2 = new Student(1,"xxh",21,"女");
        System.out.println(student2);
    }

    @Test
    public  void test3(){
        Teacher teacher = new Teacher();
        teacher.setId(1);
        teacher.setName("xxh");
        teacher.setAge(21);
        teacher.setSalary(2155);
        System.out.println(teacher);
        System.out.println(teacher.toString());

        Teacher teacher1 = new Teacher();
        System.out.println(teacher1.getName());//null
    }
    @Test
    public void test4(){
//    局部变量必须要赋值
    Teacher teacher = new Teacher();
//    java.lang.NullPointerException
//    null.属性或者null.方法
//        空指针异常
        System.out.println(teacher.getName());
    }
    @Test
    public void test5(){
        int[] array1 = new int[2];
        Student[] array3 = new Student[3];//new了数组,里面的学生都是空的
        System.out.println(array3[0]);

        Student student = new Student();//new了学生对象
        array3[1]=student;
        System.out.println(array3[1]);

    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值