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
小明
小红
小明在学习
小红在玩
构造器
-
构造器也叫构造方法
-
构造器在进行创建对象的时候必须要调用的
-
构造器的特点:
- 必须和类的名字相同
- 必须没有返回类型,也不能写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,String,Student2,构造,面向对象,new,public,name 来源: https://www.cnblogs.com/sxw0514/p/15824202.html