小哥哥,小姐姐,感觉写的不错、浅浅的给个赞呗,
文章后续理解Java主线三:
目录
(主线一)属性(类的成员变量) vs 局部变量
相同点:
-
- 定义变量的格式,数 据类型 变量名 = 变量值
- 先声明,后使用。
- 变量都有自己的作用域。
不同点:
2.1, 在类中声明的位置不同。
属性:直接定义在类的{}中,
局部变量声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量。
2.2,关于权限的修饰符不同,
属性:可以再声明属性时,指明其权限,使用权限修饰符。
常用的权限修饰符:public、private、protected、缺省。
缺省一般就是默认。
局部变量:不可以使用权限修饰符。
2.3,初始化值不同 (时间:2022年6月8日18:10:09);
属性:类的属性,根据其类型,都有默认初始化值。
整型 (byte, short, int, long ) ( 0 )
浮点型 (float , double ,)( 0.0 )
字符型 (char)(0或\u0000)
布尔型 (Boolean ) (false)
引用数据类型(类,接口,数组),null
局部变量:没有默认的初始化变量,一定是显式赋值。
2.4在内存中加载的位置
属性:加载到堆内存(唯一的存放实例化对象的空间)中。
局部变量:加载到栈内存 (又称“虚拟机栈”主要存放局部变量)。
方法:
3.1 关于方法的权限修饰符,默认方法的权限修饰符public Java的四种权限修饰符:public、private、protected、缺省—》封装。
3.2 返回值的类型,有返回值 VS 没有返回值
3.2.1 如果方法有返回值,则必须在方法的声明是指出返回值类型,同时在方法体中需要有return关键字来返回与之对应的变量或者常量:“return 数据”。
3.3 形参列表,可以没有也可以有很多个(中间用逗号隔开);
方法重载:
方法的重载(overload):在同一个类中一个以上的重名方法,只要他们的参数类型或者参数个数不同即可。(同一个类中,方法名相同,但是参数列表不同)。
4,return语句的使用
- 适用范围:使用在方法体中。
- 作用:结束方法、(针对有返回值的方法),使用return语句来返回会想要的数据。
5,方法的使用:
我们用创建的对象来调用,(如果是静态方法(被static修饰的方法)我们还可以通过“类名.方法”的方式去调用静态方法)
在方法内中可以调用当前类中的属性和方法。
特殊的在方法中调用方法自身,叫 “递归”。(谨慎使用)在使用递归的时候,你需要找见递归的出口,不然就形成了一个死循环。
面向对象总结:
时间:2022年6月9日18:55:55
- 面向对象思想编程内容的三条主线分别是什么?
- 类及类的成员:属性、方法、构造器;代码块、内部类
- 面向对象的三大特征:封装、多态、继承
- 其他关键字:this、super、abstract、static、final 、import。。。
二,类和对象的关系:对象是类的实例化,(面试的时候举例,要举高大上的,实际应用中自己项目中遇到的。不说浅显和入门的例子)对象是类的实例化,是类派生出来的。我们可以通过对象来调用类中的属性和方法。
三,面向对象思想的体现:类和对象的创建和执行操作分三步
- 创建类(属性和方法);
- 类的实例化(创建类的实例化对象);
- 通过对象来操作类的属性和调用方法;
四,如果创建了一个或多个对象,则每个对象都独立的拥有一套类的属性(单例模式除外、非(static)的),意味着,如果我们修改了B对象的属性,不会影响另一个对象A的属性。(在运行时才分配内存)
五,编译完源程序以后,生成一个或多个字节码文件,我们使用JVM中加载器和解释器对生成的字节码文件进行运行,需要将字节码文件对应的类加载到内存中。堆内存中放属性或者(new出来的),在栈内存中放的是局部变量。
理解:“万事万物皆对象”
解:在java语言中我们将功能、结构、属性等封装到类,然后通过类的实例化,来调用具体的功能结构,在实际中,比如我们和其他的编程语言进行交互的时候,都是通过一个一个的类或者对象去联系
可以将每一个功能封装成一个方法,可以提高复用性。(java提倡这样,便于方法的扩展)
做题一道,int数组的部分类方法重写
内部类
在java中,我么可以在一个类中继续定义另一个类,那么在类中的类就叫做内部类,而外面的类叫做外部类。
内部类又可以分为,成员内部类和局部内部类(方法内、代码块内、构造器内)
就是把类定义在类的内部的情况就可以形成内部类的形式。
A类中又定义了B类,B类就是内部类,B类可以当做A类的一个成员看待:
2 特点
1) 内部类可以直接访问外部类中的成员,包括私有成员
2) 外部类要访问内部类的成员,必须要建立内部类的对象
3) 在成员位置的内部类是成员内部类
4) 在局部位置的内部类是局部内部类
(主线二)面向对象的三大特征
封装:
问题引入:
当我们创建一个类的对象以后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值,这里,赋值的操作要受到属性的数据类型和存储范围的制约。除此之外,没有其他制约条件,但是在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能再属性的声明时体现,我们只能通过方法进行限制条件的添加。
同时我们还需要避免用户再对属性进行修改,我们就对属性声明为私有(private)。这就是封装。
封装的体现:
我们将类的属性进行私有化设置后,同时我们还会提供一个get方法(来获取属性)和set方法(来设置属性)。
封装性的其他体现:属性的私有、方法的私有、单例模式?
封装性的体现需要权限修饰符的配合
继承:
第一次自述继承知识点:
首先什么是继承呢?为什么要继承呢?继承的优点是什么呢?
继承我们可以看成使两个类之间产生联系,主动继承的类叫做子类或基类,被继承的类叫做父类或超类(在这里我们引进一个知识点,java中最大的超类是object类,所有的java类都间接或者直接继承自object类)。在继承之后,我们的子类就会去拥有父类的非私有的方法和属性,并且去使用,这就很大程度上减少了我们写的代码的量,增加了代码的复用性,减少了代码的冗余。(继承是多态的前提)
关于继承的要求:一个类只能有一个直接父类但是可以有多个间接父类,一个父类可以有多个子类,
多态:
有多态的前提:有继承关系;
多态指的是对行为的多态。多态,从字面意思理解就是一个事物有多种形态,对应到java中行为的多态,就是在继承的前提下,同一种行为在父类和子类中有不同的体现,然而行为在java中我们使用方法来表示,多态就是同名的方法,在不同的调用下有着不同的功能体现,比如父类中有一个方法,eat()人吃饭,而在子类中 这个方法就可以是 “人吃拉条子” ,同一种方法在子父类中有不同的体现
深入了解面向对象三大特征:
面向对象三大特性
面向对象的特征有哪些方面?
面向对象的特征主要有以下几个方面:
抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。
•封装:封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问。但是如果一个类没 有提供给外界访问的方法,那么这个类也没有什么意义了。
•继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用 继承我们能够非常方便地复用以前的代码。
关于继承如下3点请记住:
1.子类拥有父类非private的属性和方法。
2.子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3.子类可以用自己的方式实现父类的方法。
• 多态:所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到 底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。
其中Java面向对象编程三大特性:封装 继承 多态
封装性:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
继承性:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通 过使用继承可以提高代码复用性。继承是多态的前提。
多态性:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。在Java中有两种形式可以实现多态:继承(多个子类对同一方法的重写)和接口(实现接口并覆盖接口中同一方法)。
方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。