Java
相信我们到这里,都会想问,Java到底是什么?
在这里小北作为菜菜,也很想发问?
所以从小北的角度,带着疑问进行探索吧。
Java时面向对象的语言
相信很多和和小北一样,都想问,什么事面向对象?没有对象的怎么面>.<.
小北,带着这个疑问,来了解
Java中的对象,是一个比较抽象的概念,抽象到什么程度呢?
一切皆对象
当然不是让爱情跨越物种和性别的意思哈。
在Java中,把能描述的物体都称作对象。像小猫小狗啊,可能在现实中我们还不平等,在这里,都是对象,猛一看没啥区别<.>。所以,我们就可以理解成,在Java中,对象就是具体的☞某个实际存在的实例。
那我们怎么来藐视这些实例呢,怎么描述出我们是人不是猫,不是狗呢。需要用到类,这个概念。类说了什么事呢,就说你又年龄,有名字,又一切能与别人不一样的特征,也描述了你能做什么事->能做什么动作。
那么在这里,类是什么?对一类事物的描述
对象是什么?一类事物的实例
事物有什么呢:事物都有自己的特性和行为
特性怎么表示呢,我们用成员变量来表示
行为怎么表示呢,我们用方法来表示你做了什么
如何创建一个类
public class Person {
//这里我们创建一个人的类
/*
那我们想一下,人有什么特征
1.名字
2.年龄
3.性别
4.职业
人会做什么?
人和动物的区别所在,就是人能说人话
方法:shuorenhua(speek)
*/
//创建以成员变量来表示特征
String name;//姓名
int age;//年龄
String sex;//性别
String work;//工作,职业
//定义一下人说人话的方法
public static void speek(String name,int age,String sex,String work){
//输出一下
System.out.println("我叫:"+name+",今年"+age+"岁,是个"+sex+work+".");
}
}
我们创建了Person类,但是我们怎么实现想要整明我们能说人话,说自己是个人呢。
方法1:
public class Demo {
public static void main(String[] args) {
Person p=new Person();
//System.out.println(p);
p.name="zhangsan";
p.age=21;
p.sex="男";
p.work="程序员";
p.speek(p.name,p.age,p.sex,p.work);
}
}
方法2:
public class Demo {
public static void main(String[] args) {
Person p=new Person();
//System.out.println(p);
p.speek("zhangsan",21,"男","程序员");
}
}
输出:
我们发现两种方式都能输出相同的结果。
在这里我们说下,成员变量和成员方法如何使用
(对象名就是我们创建的Person p,p就是Person类创建的对象)
使用成员变量:对象名.成员变量名。
那么第二种方法中,我们直接调用成员变量,通过传递参数的方法,直接给speek方法,传递参数,并没有通过给成员变量赋值的方式去实现。
到这里我们就接触到了Java三大特性中的——封装性
方法就是封装的一种体现。
private也是一种封装
关键字Private
在这里可能很多人就有疑问了,怎么突然又到关键字Private了,和private有什么关系?
那我们刚刚用到的成员变量,是默认的,是任何类都能调用的。我们欸~,突然不想让别人用了,那我们就在类中员变量最前面加上private。
然后我们突然发现我们自己怎么也没法调用成员变量了呢?
这时候,需要我们用到我们的getter和setter方法
在类中应用get和set方法
public class Person {
//这里我们创建一个人的类
/*
那我们想一下,人有什么特征
1.名字
2.年龄
3.性别
4.职业
人会做什么?
人和动物的区别所在,就是人能说人话
方法:shuorenhua(speek)
*/
//创建以成员变量来表示特征
private String name;//姓名
private int age;//年龄
private String sex;//性别
private String work;//工作,职业
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
//定义一下人说人话的方法
public static void speek(String name,int age,String sex,String work){
//输出一下
System.out.println("我叫:"+name+",今年"+age+"岁,是个"+sex+work+".");
}
}
调用也发生相应的改变
public class Demo {
public static void main(String[] args) {
Person p=new Person();
//System.out.println(p);
p.setName("zhangsan");
p.setAge(21);
p.setSex("男");
p.setWork("程序员");
p.speek(p.getName(),p.getAge(),p.getSex(),p.getWork());
}
}
有没有好奇为什么使用private关键字?
构造方法
我们在这里讨论下构造方法
构造方法是干么的?
是专门用来创建对象的方法
我们可以看下代码
public class Person {
//这里我们创建一个人的类
/*
那我们想一下,人有什么特征
1.名字
2.年龄
3.性别
4.职业
人会做什么?
人和动物的区别所在,就是人能说人话
方法:shuorenhua(speek)
*/
//创建以成员变量来表示特征
private String name;//姓名
private int age;//年龄
private String sex;//性别
private String work;//工作,职业
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
public Person(String name, int age, String sex, String work) {
this.name = name;
this.age = age;
this.sex = sex;
this.work = work;
System.out.println("我叫:"+name+",今年"+age+"岁,是个"+sex+work+".");
}
}
我们将speek方法删除,创建了全参构造方法
public class Demo {
public static void main(String[] args) {
Person p=new Person("zhangsan",21,"男","程序员");
}
}
再观察我们的Demo类,发现我们创建对象时可以将参数直接写到对象里。
我们发现结果依然是原来的结果。
注意
1.构造方法的名称必须和所在类的名称完b相’y
2.构造方法不用返回值、类型、void也不需要
3.构造方法不能return一个具体的数值
4.如果没有编写任何构造方法,默认有一个
5.编写至少一个构造方法,不会默认再有
6.构造方法也可以重载
总结
一个标准的类通常有四个组成部分
1.所有的变量都要使用private关键字修饰
2.为每一个成员变量编写一堆get/set
3.编写一个无参构造方法
4.编写一个有参构造方法