欢迎大家来到IT世界,在知识的湖畔探索吧!
1.什么是面向对象
众所周知java是面向对象的编程语言,那么什么是面向对象呢,大家经常把面向对象和面向过程混淆,下面就说个例子,一秒就会!
例如小明有一些脏衣服需要去洗干净,这是就相当于一个命令把衣服洗干净
A:面向过程:小明需要自己独立完成,打水、放洗衣液、搓衣服等等一些列操作直至衣服洗干净
B:面向对象:小明不需要自己独立完成,但是他需要把衣服送到具有洗衣服功能的地方,例如洗衣房,你需要办一张会员卡,然后对工作人员说:我不管你用什么办法,总之给我洗干净就行
2.面向对象格式
首先需要一个类,这里面不写main方法,这里面会有三部分组成
A:类变量B:类方法C:构造函数
假如现在有一个学生类
A:类变量,又称作成员变量,它是用来描述这个类的属性,、一个学生肯定有姓名、学号、年龄、性别等一些列属性!所以这些成为成员变量
B:类方法:类方法就是这个类他有什么功能,他能干一些什么,例如一个学生他能算数、考试、吃饭等一系列技能
C:构造函数:构造函数就是给这个类找个实体,现在只知道这是一个学生类,这个学生类具体是谁啊,目前不知道,现在就需要一个构造函数来完成定义一个实体,注意构造函数他主要有两种,一种是无参构造另一种有参构造构造函数可以有多个或者一个没有,接下来就说一下这两个的区别
无参构造:无参构造来定义一个实体时,只是指明有一个学生,但是学生的信息没有说!当在学生类中没有写构造函数,java会自动为这个类提供一个无参构造,用于创建对象(实体)
有参构造:有参构造定义的一个学生,他还指定了一个这个学生的一些信息,比如这个学生叫什么,今年多大了,下面通过代码来说明一下描述
学生类:
public class Student {
//成员变量
String name;//学生姓名
String sex;//学生性别
int age;//学生年龄
/**
* 成员方法
* 格式: 修饰值关键字 返回值类型 方法名(参数){}
* 修饰关键字:public(所有地方都可以用) protected(同一个项目可以用) 不写(同一个包) private(同一个类)
*返回值类型:就是完成这个方法,返回的结果
*参数:这里的参数指的是形式参数
*
*/
public void eat() {
System.out.println("我会吃饭");
}
public int add(int a,int b) {
return a+b;
}
//构造函数,记住这个格式即可
//有参构造
public Student(String name, String sex, int age) {
super();
this.name = name;
this.sex = sex;
this.age = age;
}
//无参构造
public Student() {
}
}
欢迎大家来到IT世界,在知识的湖畔探索吧!
测试类:
因为在学生类中我们没有写main函数,没有办法运行,需要写一个测试类
欢迎大家来到IT世界,在知识的湖畔探索吧!public class TestStudent {
public static void main(String[] args) {
//创建对象,对象是怎么来的,new出来
//这就是一个学生,用stu1表示,但这个学生没有指定任何信息就称为无参构造
Student stu1=new Student();
//因为stu1是个学生,所以他能够完成Student类中的功能,实体对象.方法名();即可调用
stu1.eat();
//这就是一个学生,用stu2表示,但这个学生指定了他的姓名、性别、年龄我们称为有参构造
Student stu2=new Student("zhangsan","nan",18);
}
}
注意:一个类中可以没有构造函数,也可以有多个构造函数
3.方法重载
方法的重载这个也比较重要,方法重载指的是在一个类中两个方法方法的名字相同,但传递的参数不同,代码如下
public class Test {
public void shouMe(String name,int age) {
System.out.println("我的名字"+"name"+"我今年"+age);
}public void shouMe(String name ,String sex,int age) {
System.out.println("我的名字"+name+"我的性别"+sex+"我的年龄"+age);
}
public static void main(String[] args) {
Test t1=new Test();
t1.shouMe("zhangsan", 14);
t1.shouMe("lisi", "nan", 15);
/**
* 打印结果
* 我的名字name我今年14
*我的名字lisi我的性别nan我的年龄15
*/
}
}
4.this的使用
当一个类中的成员变量与方法的形参重名里,在方法中要使用成员变量的值需要用this.成员变量
欢迎大家来到IT世界,在知识的湖畔探索吧!public class Stu{
String name="张三";
public static void main(String[] args) {
Stu s1=new Stu();
s1.test("李四");
}
public void test(String name){
//这里的name为形参
System.out.println(name);//结果为李四
System.out.println(this.name);//结果为张三
}
}
5.静态static
静态是比较常用的一个关键字,静态经常修饰变量,方法,静态代码块
用static修饰的有两个特性A:静态B:共享
B:共享:用static修饰的变量和方法,表示他不是一个对象独有的,他是所有对象公用的,用static修饰的变量和方法,不需要创建对象就可以直接类名.方法名/变量名即可调用
public class Stu{
String name="张三";
public static void main(String[] args) {
Stu.test("李四");//因为test方法是静态的,所有可以直接用,不建立对象,变量也是如此
}
public static void test(String name){
//这里的name为形参
System.out.println(name);//结果为李四
System.out.println(this.name);//结果为张三
}
}
静态代码块是类加载便执行的部分,他是第一个执行的,但是他只执行一次,当再次访问这个类时,static代码块不会执行,接下来说明一下静态代码块、构造函数,构造代码块执行顺序
public class sta {
/**
*
* 静态代码块在类加载的时候运行,只要加载class文件,静态代码块就会执行,且只执行一次
* 一个类中静态代码块最先执行且只运行一次,构造代码块会在new对象时执行且在构造方法之前运行
*
* @param args
*/
String name;
int age;
{
//构造代码块
System.out.println("我是构造代码块");
}
static {
//静态代码块
System.out.println("我是静态代码块");
}
public sta() {
//无惨构造函数
System.out.println("我是无惨构造");
}
public sta(String name, int age) {
//有参构造函数
System.out.println("我是有参构造");
this.name = name;
this.age = age;
}
public static void main(String[] args) {
sta s=new sta();
sta s2=new sta("xzc", 21);
}
}
结果
我是静态代码块
我是构造代码块
我是无惨构造
我是构造代码块
我是有参构造
所以执行顺序静态代码块>构造代码块>构造函数
还有继承,这是java的特点之一,下次更新
文本福利:
为了让大家更快速高效的学习,我整理了一份 Java 全能资料包含(高可用、高并发、高性能及分布式、 Jvm 性能调优、 Spring 源码, MyBatis , Netty , Redis , Kafka , Mysql , Zookeeper , Tomcat , Docker , Dubbo , Nginx ,架构,面试等等…)
大家可自行领取!
领取方式-关注 私信回复我 6
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/48738.html