1、对象:
Everything is object
万物皆对象
所有事物都有两个方面:
有什么属性:用来描述对象
能够做什么方法:告诉外界对象有哪些功能;
后者以前者为基础
大的对象的属性也可以是一个对象。
通俗的讲:对象:生活中具体的实体
类:是不存在的,对象的抽象(一种虚拟的概念定义):包含一些列对象共同点的属性和行为集合。
类:人类、房子类、狗类、喵星人类
如果说一个对象拥有一个类中的所有的属性和行为,那这个对象就属于这个类,可以用 这个类名来称呼这个对象
类定义的格式:public class 类名{}
定义属性格式:public 属性类型 属性名;
定义行为格式:public 返回类型 方法名(){}
2、构造器:
作用:用来构造当前类的对象、初始化当前类对象的一些属性
格式:public 类名(){}
特点:执行的时间是创建当前类的对象时候执行
有返回值,返回的是内存的地址
3、构造方法:是当用类生成对象时,系统在生成对象的工程中利用的方法。
注意:构造方法在生成对象的时候会被调用,但并不是构造方法生成了对象。
构造方法是没有返回值的!
格式:public 方法名;
但构造方法的方法名与类名相同,它是在对象生成的工程中自动调用,不能利用指令去调用。
比如:Student Stu=new Student():
“Student()”表示调用一个无参数的构造方法,如果()中有参数,则系统构造对象的过程中调用有参数的方法。Student Stu存放的是地址。
可以进行构造多个构造方法,但多个构造方法的参数表一定不同,参数的顺序不同属于不同的构造方法。
比如:public student (string s,int a){}
public student (int a,string s){}
public student (string s{}
public student (int a){}
如果我们未给系统提供一个构造方法,那么系统会自动提供一个为空的构造方法(默认的)。
4、继承:
定义:子类继承父类,拥有父类的所有非私有属性和方法
格式:public class 子类类名 extends 父类类名{}
作用:方便重复使用已经定义了的属性和方法,不要重复编写
不允许有多继承,一个类有且只有一个父类。
This()用于调用本类的构造方法,
但在构造方法中,this表示本类的其他构造方法:
Student(){};
Student(string s){
This();
} 此时this()表示调用student()
如果调用student(int a)则为this(int a)。
还需注意的是 如果用this调用其他构造方法是,this必须为第一条语句,然后才是其他语句。
5、方法重载:在同一个类中,多个方法的方法名相同,参数个数/类型/顺序不一样的方法互为重载方法
注意:构造方法重载,主要用于初始化当前对象属性
如果重载了构造方法,则默认的构造方法就不存在了
方法重载的存在只是作为应对方法的细节,利用类型的差异来影响对方法的调用。
比如:吃()可以分为吃肉,吃菜,吃药,在一个类中可以定义多个吃方法。
用构造方法也可以实现方法重载
Public void eat(){};
Public void eat(int a){};
Public void eat(String s){};
6、方法重写:子类重写父类的方法(方法名、参数必须一致)
重写就是子类覆盖父类继承过来的方法
当子类从父类继承一个无参的方法,而又定义了一个同样的无参方法,则子类新写的方法会覆盖父类的方法(返回值的类型必须相同,否则会出错)。但是如果方法不同的话,则会变成重载。
7、自动转型:子类对象自动转型为父类类型
比如:如果我是一个大学生,那么我就是一个学生
格式:父类类型 对象名 = new 子类类名();
注意:自动转型后的对象是:父类类型
自动转型后的对象调用父类方法的时候,如果子类重写了,则会执行重写后的方法,如果没有重写,则执行父类自己的
比如:
public class Student {
public void study(){
System.out.println("学生进行学习的方法");
}
}
public class MiddleStudent extends Student{ //Middlestudent继承Student父类
public void study(){
System.out.println("中学生进行学习的方法");
}
}
Public class test{
Public static void main(String[] args){
Student ms=new Middlestudent();//进行转型
ms.study();
}
因为中学生属于学生这一范围,所以可以说成中学生是学生,但反过来学生就不一定是中学生,这时就可以对中学生进行学生(父类)的转型,把中学生转型成学生这一类型,中学生转型后调用(父类)学生的方法时,如果中学生没有重写方法,那结果应该是输出"学生进行学习的方法",但中学生已经进行重写方法了,这时执行重写了的方法,此时输出的是"中学生进行学习的方法"。
8、多态性:多个同一个类型的对象调用方法的时候,执行不一样的过程