Java面向对象(三)

2022/1/19 22:21:20

本文主要是介绍Java面向对象(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java面向对象(三)

类与对象的关系

类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表一个具体的事物

  • 例如:人、植物、手机、电脑...
  • 例如:Person类、Pet类、Car类等,这些类都是用来描述/定义某一具体的事物应该具备的特点和行为

对象

对象是抽象概念的具体实例

  • 张三就是的一个具体实例
  • 张三家里的旺财就是类的一个具体实例
  • 具体实例:能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念

创建对象

  • 使用new关键字创建对象
  • 使用new关键字创建的时候:会分配内存空间、给创建好的对象进行默认的初始化、对类中构造器的调用

  • 一个类里只包含属性方法
//类
//学生类
public class Student {
    //属性
    String name;
    int age;
    //方法
    public void study(){
        System.out.println(this.name+"在学习");//this代表这个类
    }
    public void play(){
        System.out.println(this.name+"在玩");
    }
}
//主函数
//主函数将类实例化
public class Application {
    public static void main(String[] args) {
        //对类进行实例化
        //类实例化后会返回一个自己的对象
        //std1和std2对象就是Student的一个具体实例
        Student std1 = new Student();
        Student std2 = new Student();
        System.out.println(std1.name);//输出默认值
        System.out.println(std2.name);//输出默认值
        //赋值
        std1.name="小明";
        std2.name="小红";
        System.out.println(std1.name);//输出赋值后的值
        System.out.println(std2.name);//输出赋值后的值
        std1.study();
        std2.play();
    }
}
//输出:
null
null
小明
小红
小明在学习
小红在玩

构造器

  • 构造器也叫构造方法

  • 构造器在进行创建对象的时候必须要调用的

  • 构造器的特点

    1. 必须和类的名字相同
    2. 必须没有返回类型,也不能写void
  • 一个类即使什么都不写,它也会有一个默认构造器(只不过没显示出来)

    //一个类
    public class Student {
    }
    //什么没有写,但实际上它有一个默认构造器
    public class Student {
        //默认构造器(构造方法),自己不用写它也会有
        public Student(){     
        }
    }
    //使用
    public class Application {
        public static void main(String[] args) {
            Student3 student3 = new Student3();
            System.out.println(student3.name);
        }
    }
    //输出为默认初始值
    //输出:
    null
    
  • 构造器的作用:

    • 实例化初始值(默认无参构造方法会使用默认初始值)

      无参构造:

      public class Student {
          String name;
          //自己写的构造方法
          //无参构造,没有参数
          public Student(){
              this.name = "史小鹏";//初始化name值为史小鹏
          }
      }
      //使用
      public class Application {
          public static void main(String[] args) {
              //new 实例化了一个对象
              Student student = new Student();
              System.out.println(student.name);
          }
      }
      //输出:
      史小鹏
      

      有参构造:

      public class Student2 {
          String name;
          //自己写的构造方法
          //有参构造,实例化对象的时候可以往里加参数
          public Student2(String a){
              this.name=a;//this指当前类
          }
      }
      //使用
      public class Application {
          public static void main(String[] args) {
              //new 实例化了一个对象
              String a="史小鹏";
              Student2 student2 = new Student2(a);
              System.out.println(student2.name);
          }
      }
      //输出:
      史小鹏
      
  • 一旦定义了有参构造:

    • 默认的无参构造就不能使用了
    • 只能自己写一个无参构造

    例一:

    public class Student2 {
        String name;
        //有参构造
        public Student2(String a){
            this.name=a;
        }
        //由于上面写了有参构造,所以默认的无参构造就不能用了,只能自己写无参构造
        //自己写无参构造
        public Student2(){
            this.name="小明";//this指当前类
        }
    }
    public class Application {
        public static void main(String[] args) {
            //new 实例化了一个对象
            //有参
            String a="史小鹏";
            Student2 std1= new Student2(a);
            System.out.println(std1.name);
            //new 实例化了一个对象
            //无参
            Student2 std2 = new Student2();
            System.out.println(std2.name);
        }
    }
    //输出:
    史小鹏
    小明
    

    例二:

    public class Student2 {
        String name;
        public Student2(String a){
            this.name=a;
        }
        //由于上面写了有参构造,所以默认的无参构造就不能用了,只能自己写无参构造
        public Student2(){
        }
    }
    public class Application {
        public static void main(String[] args) {
            //new 实例化了一个对象
            //有参
            String a="史小鹏";
            Student2 std1= new Student2(a);
            System.out.println(std1.name);
            //new 实例化了一个对象
            //无参
            Student2 std2 = new Student2();
            System.out.println(std2.name);
        }
    }
    //输出:
    史小鹏
    null
    



这篇关于Java面向对象(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程