面向对象乃是Java语言的核心,是程序设计的思想。Java语言的面向对象技术包括了面向对象和面向过程的基本概念,面向对象的特征,Java语言的类,对象,修饰符,抽象类等一系列的知识点 面向对象、面向过程
什么是课?
什么是对象?
这是两个非常抽象的概念!!!!!!!!
在解释清楚类和对象的概念之前,先说一下什么是面向对象和面向过程,以此来介绍我们的类和对象的概念。
流程化:以洗衣为例:取盆、排水、放衣服、洗衣粉、搓手、换水、拧干衣服。这个过程是面向过程的。
面向对象:以洗衣服为例:人们把衣服放进洗衣机,倒入洗衣粉,洗干净,晾干。他们不需要关心整个洗衣服的过程是如何完成的。他们只需要找到、创建和使用对象。比如我们在使用toString函数的时候,并不关心toString函数的具体实现过程。我们只是把它交给数组来帮助我们实现它,这是面向对象的。
物体从哪里来# 63;对象来源于类,对象之前有类。人,洗衣机,洗衣粉都是单独的一类。当一个类复制一个对象时,我们称之为创建一个对象。所有的对象都创建好之后,每个对象都有一些行为和属性,然后对象之间就可以互相完成了。这是面向对象和面向过程的。
要面向对象,我们必须找到对象,而对象来自于类。阶级从哪里来?我们需要抽象。比如我们都是人,每个人的话都有相同的属性,比如名字,性别,年龄,吃饭睡觉。每个人都会有这些属性,相当于一个模板。通过这个模板,可以生成很多对象,所有这些对象都有这些相同的属性。就是抽象这个人,由这个人创造对象,这个人就是一个类。要真正拥有这样一个人,让他成为一个对象,一个实体,我们需要创造他,通过新来创造他。
定义类class Person{ }//定义一个类,这个类叫Person,类名一定要是大驼峰 class Person{ //类里面包含字段,也叫做属性,也叫做成员变量 //也包含方法 //一个类就是由方法和字段组成的 public String name;//属性 public int age;//属性 //什么是方法?可以解读为这个人的行为 public void eat(){ System.out.println(name+" 正在吃饭"); } public void sleep(){ System.out.println(name+" 正在睡觉"); } }
从类生成对象的过程称为实例化,对象由new关键字实例化。
public class TestDemo { public static void main(String[] args) { Person person//定义一个变量person,此时类Person也相当于类型的意思,和int a = 10,a的类型是int一样 }}
person类定义的变量Person是一个引用变量,这意味着它的初始值可以是null。
public class TestDemo { public static void main(String[] args) { Person person = null; }}
实例化对象
public class TestDemo { public static void main(String[] args) { Person person = new Person();//由类Person实例化了一个对象 }}
一个类可以实例化多个对象。
public class TestDemo { public static void main(String[] args) { Person person = new Person();//由类Person实例化了一个对象 Person person1 = new Person(); Person person2 = new Person(); Person person3 = new Person(); Person person4 = new Person(); }}类的成员
普通成员变量
字段在类的内部方法之外定义。如果是在方法内部定义的,就叫局部变量;如果它是在方法之外定义的,则称为成员变量。
如何访问成员变量?成员变量有两种:(普通成员变量和静态成员变量)。普通成员变量是通过引用访问的。
当成员变量没有初始值时,它们有一个默认值。
如何为成员变量赋值
如果是普通的成员变量,它的内存在对象中,而不是说所有对象共享一个副本。每件物品都有自己的名字和年代。
有两种方法:一种叫普通成员方法,一种叫静态成员方法。
的公共成员方法以同样的方式访问,我的方法通过对象的引用访问。
静态成员变量
被static修改的变量叫做静态成员变量,也叫类变量,放在方法区。
静态成员变量通过类名来访问。静态成员属性/方法。
独立物体
class Person{ public String name; public int age; public static int count; public void eat(){ System.out.println(name+" 正在吃饭"); } public void sleep(){ System.out.println(name+" 正在睡觉"); } } public class TestDemo { public static void main(String[] args) { Person.count++; System.out.println(Person.count); System.out.println("================"); Person.count++; System.out.println(Person.count); }}
打印结果;
Count是由static修改的静态成员变量。它放在方法区,不属于一个对象,但属于一个类。对静态成员变量或方法的正确访问只需要类名。静态成员变量/方法。所有静态的东西都只存储在方法区,所以两次相加就是相加的计数本身,所以第二次打印的结果是2。
普通的方法内部不能够定义静态的变量
1.1.static定义的变量是类变量,属于类,(在方法内部定义是错误的,所以属于方法)
2.2.eat方法的调用需要相应的引用来调用。但是如果可以定义static这个变量,就可以调用Person这个类,所以两者直接矛盾。吃需要相应的引用来调用。Size只能由类调用。所以静态变量不能用普通方法定义。
静态的方法也不可以定义静态变量
static定义的变量是类变量,属于类。(在方法内部定义的时候属于方法,这是不可能的,所以是错的。)
摘要:静态成员变量不能在方法中定义。
静态方法可以在普通方法中调用。
class Person{ public String name; public int age; public static int count; public void eat(){ System.out.println(name+" 正在吃饭"); } public void sleep(){ staticFunc(); System.out.println(name+" 正在睡觉"); } public static void staticFunc(){ System.out.println("static::func"); } } public class TestDemo { public static void main(String[] args) { Person person = new Person(); person.eat(); person.sleep(); }}
打印结果:
不能在静态方法内部调用普通方法。
静态方法不能内部调用,因为静态方法不依赖于对象,可以通过类名调用,但是普通方法没有对象是不能调用的。
main函数为什么是静态的
一个引用不能同时指向多个对象。
引用肯定在栈上吗?不
看绿线,画一画,分析一下。
小写的person属于这个类TestDemo的成员变量。
最终装饰
private实现封装
Private/ public这两个关键字的意思是“访问控制”
public修改的成员变量或成员方法可以被类的调用方直接使用。
由private修改的成员变量或成员方法不能由该类的调用方使用。
提供接口
打印结果:
this代表当前对象的引用
构造方法
构造:方法名和类名相同,构造方法特殊,没有返回值。
施工方法是什么?我们需要知道对象的生成(对象的实例化)分为几个步骤。
1.为对象分配内存。
2.调用适当的构造方法。
这是一种施工方法。
前面的访问修饰符可以是公共的,
调用构造函数:
打印结果:
无参数和单参数及双参数的构造方法
调用构造函数:
this的区别
第一种类型:
第二种类型:
表示当前对象的eat方法。
第三种类型:
调用不带参数的构造函数,
打印结果:
此函数必须放在第一行,并且只能存储在构造函数中。
代码块
本地代码块:
两个括号
示例代码块和静态代码块:
不管生成多少个对象,静态代码块都只会执行一次,而且是先执行。执行完静态代码块后,执行实例代码块(构建块),然后执行构造函数。
太累了,拜拜!!!!!!
这就是这篇关于Java精炼和解释类和对象原理的文章。更多相关的Java类和对象
精彩评论