Java是一门面向对象的语言,所以我们想到深入了解和学习这门语言,就必须要学习类和对象的概念,下面就让我进入java语法的魅力所在吧。
初识类和并认识类和对象之间的关系
构造方法
this关键字的使用
类之间的继承
super关键字的使用
封装的思想
一、类和对象
java的程序实现逻辑是用不同的类之间完成互相的引用而实现的,与C语言学习时候我们编写程序时有很大的差别,当我们用C语言来描述一个李四在踢足球的过程是从李四拿球,射门等的顺序来实现,但当我们想去编写一个很相似的张三打篮球的程序的话,C语言就只能重新创建张三和打篮球的这个过程。大家可以看到C语言这种面向过程的编程方法就显得很低效,而java就相对容易的使用了抽象出不同的类然后碰到相似的问题是就可以具象出不同的对象来高效地完成相似度很高地任务了
如此,我们就可以大概明白类就是从李四和张三抽象出人这个类,从足球和篮球中抽象球类运动,再将这两个类通过运动地方式连接,这样我们的代码就实现了不同的功能。
类:可以看作一个设计蓝图,我们要考虑这个类的大致的结构,并以此规定它的作用。
对象:就是实例化类的产物,用过这个蓝图我们就可以根据这个类我们所需要的对象。
一个类可以创建多个对象,这个就是类和对象的基本概念。
class Dog{
public String name;
public int age;
public String color;//这些在类中的变量叫做成员变量并且不需要初始化
public void eat(){
System.out.println(this.name+"正在吃饭");
}
public void wangWang(){
System.out.println(this.name+"在汪汪叫");//在类中定义的方法叫做成员方法
}
public Dog(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;
}
}
我们先构造一个Dog类,在规定好成员变量和成员方法完成后,这样一个狗类就产生了。
public class test {
public static void main(String[] args) {
Dog dog = new Dog("wangcai",3,"black");
dog.wangWang();
dog.eat();
}
}
![](https://img-blog.csdnimg.cn/img_convert/485038fbfd0646539006ddb874629fc0.png)
最后的运行结果就是如此,我们就创建了以一个实例的Dog,它是wangcai。
public Dog(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;
}
}
眼尖的同学会看到在Dog类中有一个同名的方法并且在里面有一个this的出现,我们接下来一个一个地了解。
构造方法
在一个类中,如果有和类同名的方法,呢么它就是构造方法,构造方法在创建实例化对象的时候最先执行,它起到的作用就是将参数赋给成员变量,在对象一开始构造时最先发挥作用的就是构造方法。
当我们不刻意去定义构造方法是,其实编译器就已经默认定义了一个没有参数的构造方法,只是我们看不到而已。
注意:构造方法也只调用一次。
this关键字
public class Date {
public int year;
public int month;
public int day;
public void setDay(int year, int month, int day){
this.year = year;
this.month = month;
this.day = day;
}
public void printDate(){
System.out.println(this.year + "/" + this.month + "/" + this.day);
}
}
当我们使用不同的参数去调用方式时,不同的对象的变量不同,类又如何明确知道如何正确地定义成员变量呢,我们就用到了this这个关键字用this修饰地变量只会访问该对象所使用地变量,而this具体就代表当前对象 成员方法运行时调用该成员方法的对象。
this这个关键字有3个运用方法
1.this.变量名
2.this.方法名
3.this();代表访问该对象地构造方法
二、类之间地继承
当我们定义了一个狗类后,我们还想去重新定义一个猫类,当我们费尽一般周折后发现猫类中也有和狗类十分相似地成员变量和方法。本着能偷懒就不多办事地程序员来说,我们能不能只定义一个类然后含有共性地成员变量和方法我们就可以省去很多重复地动作了。这个实现就叫做类的继承。
class Cat {
public String name;
public int age;
public String color;
public void eat(){
System.out.println(this.name+"正在吃猫条");
}
public void mimi(){
System.out.println(this.name+"正在咪咪叫");
}
}
当我们编写完Cat类之后陷入了沉思,有什么办法能少写一点,前辈们给出了解决方案。
class Animals {
public String name;
public int age;
public String color;
}
我们就简单写了一个Animals这个类别,它包含了Dog和Cat两个类共同的成员变量。
我们就可以将代码改写为
class Dog extends Animals{
public void wangWang(){
System.out.println(this.name+"在汪汪叫");//在类中定义的方法叫做成员方法
}
}
如此我们便更为方便地创建了Dog类。但当我们想在Dog类地变量里访问name怎么办呢?这就引出了super这个关键字。
super关键字
当我们想在子类中访问父类继承来的变量时,我们会使用super来进行访问,而super与this都是关键字,他们的原理都是代表所要访问的对象,而super就指代该对象的父类我们可以用这是他们的不同点。
this与super的相同点:
1.都是关键字
2.都不能引用静态方法
3.都是对对象的引用
4.在构造方法使用时只用出现在第一行代码中
三,封装
当我们使用电脑和电视我们只需要打开开关使用,在不使用的时候将他们关闭我们不需要去深究在这些功能下他们是如何运作的所以封装就是将复杂的内部逻辑给隐藏,只需要将具体的功能提供给用户即可。
想要实现封装我们就要明白private关键字。
class person{
public String name;
private age;
}
在person这个类中我们会发现定义了两个不同的成员变量他们的区别就是public和private这是访问权限修饰符,private表示只有在这个类中才能使用age这个变量而public咋可以在程序的任何地方去访问类中的这个变量。
而如果我们想去调用age变量的话有该怎么办呢?
public String getAge(person){
return this.age
}
我们可以调用这个变量来实现对name的调用。
以上就是对类和对象的初步认识,希望能得到大佬们的见解和指正!