学习java第二季学习笔记
主题一:类和对象
1.什么是类和对象
答:我们向来说什么是面向对象就是人面对这对象
对象:客观存在的都是对象
类:确定对象将拥有的特征(属性)和行为(方法)
类和对象的关系:类是抽象的概念,仅仅是模板,比如说手机,而对象是一个你可以看到,摸到的具体实体比如我的iPhone6s;详见下图:从字面上看:对于计算机来讲我们更关注对象的信息
例子:我们要买的苹果6s就是一个对象,卖家要我们描述手机的配置就是一个类,这里我们的描述只是抽象的不存在一个类;
2.如何定义java中的类
答:使用class来定义类,所有的java程序都以类为组织单元
public class MyClass{属性和方法};详见下图:
3.如何使用java中的对象
答:通过类名 对象名 = new 类名();这样我们就实例化个对象放到内存中
如Telphone phone = new Telphone(); 其中new Telphone()就是一个对象 ,Telphone()是个构造方法,通过phone来引用,可以phone.属性来调用对象属性,也可以phone.方法来调用对象的方法;详见下图:类是以代码形式保存到文件中,当我们把文件的信息放到内存当中,此时这些信息的集合就是对象(实例化)
4.java中的成员变量和局部变量
答:成员变量:在类中定义用来描述对象将要有什么;本类中的方法访问后其他类,也可以说是这个类都可见得;
局部变量:在类的方法中定义,在方法中临时保存数据;本方法中使用;
假如遇到变量名相同时,局部变量的优先级更高
详见下图:
不同类型的变量的默认值不同:
基本类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char '\u0000'
boolean false
String的默认值为null
5.java中的构造方法
答:构造方法:用来创建个对象和初始化对象的属性,名称和类名相同并没有返回值
如:public Love(){},如果我们没有写构造方法,系统会默认生成一个无参数的构造方法,反之亦然;
详见下图:是没有返回值类型不是无返回值类型
6.java中的static使用之静态变量
答:Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享;
详见下图:
7.java中的static使用之静态方法
答:与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法
(1)、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
(2)、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
(3)、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。详见下图:
8.java中的static使用之静态初始化块
答(1)静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
(2)在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。详见下图:
主题二:封装
9.什么是java中的封装
答:将类的信息隐藏到类内部,不允许外部程序直接访问,只是通过方法来访问和操作
封装步骤:属性设为private,使用getter/setter放来来操作属性,在getter/setter中可以限制访问和操作;详见下图:
10.使用包管理java中的类
答:包类似于文件夹,不同的包类可以相同
语法:package 报名; 必须要放到java源代码的第一行,包名间可以用“.”号来隔开,报名都是小写
例子:package com.myweb.MyClass;
11.java中的访问修饰符
答:访问修饰符可以修饰我们的属性和方法的范围;修饰方法和属性
private:本类
默认 本类和同包
protected:本类、同包、子类
public:本类、同包、子类、其他;详见下图:
例子:我们的钱包就是private,那默认情况下我自己可以,在一个房间的我媳妇也可以用,我儿子也可以用protected,public就是任何人都可以用
12.java中的this关键字
答this关键字代表当前对象;
this.属性操作当前对象的属性
封装对象时常用到this;
this.方法 调用当前对象的方法
详见下图:
13.什么是java中的内部类
答:内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
(1). 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
(2). 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
(3). 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
内部类可以分为以下几种:成员/静态/方法/匿名/内部类;
14.java中的成员内部类
答:(1)、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
(2)、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a
(3)、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
(4)、 编译上面的程序后,会发现产生了两个 .class 文件
其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class
提示:
(3)、 外部类是不能直接使用内部类的成员和方法滴
可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。
(4)、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
详见下图:
15.java中的静态内部类
答:(1)、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
(2)、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
(3)、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
详见下图:
16.java中的方法内部类
答:方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
一定要注意哦:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。详见下图:方法内部类:只能用内对象来调用,可以访问外部类的所有资源;
主题三: 继承
17.java中的继承
答:java是单继承,有个好父亲就少奋斗
语法class 子类 extends 父类{*}
动物:父类
鸭:子类
有点像类和对象
详见图下:
18.java中的方法重写
答:重写方法后会优先掉用子类方法;详见图下:
19.java中的继承初始化的顺序
答:(1)初始化父亲再初始子类
(2)先执行初始化对象中的属性,在执行构造方法中的初始化
详见下图:
20.java中的final的使用
答:final就是最终的,
详见下图:
21.java中的super的使用
答:(1)在对象的内部使用,可以代表父类的对象
详见图:2)子类的构造过程当中必须调用父类的构造方法(隐式显示,也就是说不管咋样子类一定调用父类方法);
显示调用必须放到构造方法的第一行;
22.java中的object类1
默认返回的是对象地址哈希值,要重写返回对象属性值(默认继承 Object 的 toString( ) 方法,输出对象引用地址哈希值)
详见图:继承关系:hash算法:重写toString方法后:
22.java中的object类11
答:默认的equal方法就是比较对象的引用是否指定同一块内存地址相等
但是我们生活中是通过属性是否相等来判断是否对象相等
详见图:dog可以看遥控器,对象看做事电视(1). 我丢的手机和你偷我的手机(不重写equal方法的情况)
(2). 我和我媳妇一起买的两个一模一样的iphone6s手机(重写equal方法后,通过属性来判断对象是否相等,来判断是否是相同的对象)在没有重写equal方法时(只是比较这两个对象的引用地址是否相等,由于我new了两次开辟了两个内存区域,所以两个对象的引用是不相同的):虽然是两个对象,但是我想判断对象的数据是否相同?哈哈就要重写equal方法
27.UML简介
答详见图下:使用PowerDesin来设计:
(1)新建类图:(2)编写类信息指定这个类是个抽象类:(3)使用继承箭头来实现类之间的继承关系:(4)重写父类的方法:(5)使用实现接口箭头来实现接口:(6)子类必须实现接口里所有的方法:(7)自动生成java单码:
课外题:
抽象方法必须在子类中实现,这句话对吗?
不正确
包含抽象方法的类叫做抽象类。而抽象方法是类中指那些仅声明,并不做实现的方法。
这些方法可以作为一个通用的接口,规范子类的实现。
但是抽象类的子类并不一定就是实体类,也可以是另一个抽象类。在这种情况下,作为抽象类的子类,也可以不实现某些抽象方法,而是等待其子类去实现。
不过对于继承了抽象类的实体类,则必须实现所有的抽象方法,否则无法用该类声明对象——这在语法上是不允许的。
抽象方法往往被用做接口。在设计的时候,这种方法常常被用于那些需要和外部模块交互的类。这样可以屏蔽外部对实际工作类细节的了解,避免引入过多的可能导致bug的因素;另一方面,这样可以方便外部和内部交互,双方只要遵循接口的定义交互即可,减少内部对外部的依赖。
2025 - 快车库 - 我的知识库 重庆启连科技有限公司 渝ICP备16002641号-10
企客连连 表单助手 企服开发 榜单123