Java面向对象
2021-03-03 22:26
标签:定义静态方法 nat 默认方法 开箱 直接 维护 地方法 round 如何 面向过程就是分析出实现需求所需要的步骤,然后通过一些方法一步一步实现这些步骤。面向过程强调的是功能行为。 面向对象就是把整个需求中,存在共性的部分进行封装成类,然后进行实例化。它强调的是具备了功能的对象。 举个例子,比如说买电脑。 面向过程就是自己买,我需要电脑、然后查询参数信息、横向比较机型、了解折扣信息、与商家讨价还价、下单、收快递、开箱验货、确认收货。 面向对象就是找人买。我需要电脑,然后找女朋友帮我买、收电脑。 优点:因为面向对象会把所有的事务看成是对象。所以面向过程性能上优于面向对象。 缺点:不易维护、复用、拓展。 优点:易维护、复用、拓展、低耦合、系统更加灵活。 缺点:性能比面向过程低、开销大。 类和对象是面向对象方法的核心概念。 类是对一类事物的描述,是抽象的、概念上的定义。 对象是实际存在的该类事物的每个个体,是类的实例。 类不占内存,对象才占内存。 举个例子来说明二者的关系。 如果汽车的设计图纸是类,那么对象就是根据该图纸创造出来的一辆辆汽车。 对象的三大特征是:封装、继承、多态。 把不想让别人看到的细节和内部功能的具体实现隐藏起来,只保留和外部交流数据的接口。 举个例子:电视机用一个外壳把内部零件及控制电路封装起来,只提供按钮或者遥控器接口供人使用。 如何使用:一般是将属性私有化(private),或者提供对应的get和set方法。 在一个已有类的基础上派生出新类。其最大的好处就是实现了代码的高效重用,也更加形象的描述现实世界中对象的关系。但是耦合度提高了。 举个例子:动物类,可以派生出狗类、猫类、和兔类等众多具体的动物。 继承的特点: 同一个动作作用不同的对象产生不同的具体行为。多态就是一个对象的多种形态。 举个例子:人“吃饭”这个事情,人都是要吃饭的,但不同的人吃饭时用的工具是不同的,比如东方就喜欢用筷子,而西方则喜欢用刀叉。 (1)编译时多态:方法的重载(在编译期间,调用相同的方法名根据不同的参数列表来确定调用的是那个方法 (2)运行时多态:方法的重写(只有在运行期间才能确定使用的对象类型,才能确定变量的引用指向那个实例) 1.遵循变量声明的格式:数据类型 变量名 = 初始化值 2.都有作用域 成员变量:声明在类里,方法外。 局部变量:声明在方法内,方法的形参部分、代码块内。 成员变量的修饰符有四个:public private protected 缺省(default) 局部变量没有修饰符,与所在的方法修饰符相同 成员变量:一定会有初始化值。如果在声明时,不显式的赋值,那么不同数据类型会有不同的默认初始化值。 byte short int long ==>0 float double ==> 0.0 char ==> 空格 boolean ==> false 引用类型变量 ==>null 局部变量:一定要显式的赋值。(局部变量没有默认初始化值) 成员变量存在于堆空间中,局部变量存在于占空间中。 成员变量作用在类的内部,局部变量作用在方法的内部。 构造方法,也叫构造器,构造方法最最大的作用就是创建对象,就我们new的时候就是调用了构造方法。 构造方法的作用:无参构造方法就是创建对象,有参构造方法就是在创建对象的同时给属性赋值。 参数分为两种: 形参:在方法定义的时候实际定义的参数,写在方法小括号里面的参数 实参:在调用方法的时候,实际传入到方法里面的数据 参数传递的过程中,有两项规则 运行一段程序,申请电脑内存,内存都是归jvm进行管理的。 内存会分为五部分 1.栈(Stack):主要就是存放局部变量 2.堆(Heap):new出来的东西都在堆里,在堆里的变量都是成员变量,都会有默认值。 3.方法区(Method Area):存放class文件 4.本地方法区(Native Method Area):与操作系统有关 5.寄存器(PC Register):与cpu有关 super关键字可以修饰属性、方法、构造方法 super()必须放在构造方法的首行 final关键字代表最终的意思,可以修饰类、方法、成员变量、局部变量 修饰类,代表这个类是一个最终类,这个类不能被继承,但是可以继承别的类 修饰方法,就是一个最终方法,这个方法不能被重写 修饰成员变量,成员变量的值不可改变。成员变量不会再有默认值,如果加了final关键字,需要对成员变量直接赋值。 修饰局部变量,局部变量就变成了一个常量,一旦赋值不可改变。 static关键字代表静态的意思,可以修饰属性、方法、代码块。 static修饰变量: 按照是否使用static进行修饰,可以分为:实例变量(就创建了实例以后才可以使用)和静态变量 1.抽象方法使用abstract修饰,例如:public abstract void eat() 2.抽象方法只有方法的定义,没有方法的实现。 3.抽象类就是在class前面加上abstract,例如:public abstract class Person {} 4.抽象类的特点: 4.1 抽象方法所在的类必须是抽象类 4.2 抽象类不能实例化 4.3 如果要实现抽象类,必须创建一个子类去继承抽象类 4.4 子类继承一个抽象类,必须重写抽象类中所有的抽象方法(子类也是抽象类除外) 4.5 抽象类里面可以定义普通方法 4.6抽象类里面可以定义构造方法 1.接口就是多个类之间的公共规范 2.接口的出现就是为了解决java单继承的问题,java不支持多继承 3.接口里面的方法都是抽象方法,它相当于一个特殊的抽象类 4.定义接口用 public interface 接口名{ } 1.接口里面成员变量都是常量,默认会加上“public static final ”进行修饰,不写也会默认加上 2.接口里面的方法都是抽象方法(默认方法除外),默认会加上“public abstract”进行修饰 3.接口不能实例化,抽象类通过继承实现,接口通过创建一个类去实现这个接口 4.接口里面不能定义普通方法,可以定义默认方法(jdk1.8开始,主要是为了接口升级) 5.接口里面没有构造方法 6.一个接口可以继承接口,并且可以继承多个接口 1.实现接口的类叫做实现类,类名 implements 接口名 (1)接口和抽象类都不能被实例化。只能被其他类实现和继承。 (1)抽象类与接口定义不同:抽象类abstract class ,接口 interface (2)接口里只能包含抽象方法,不包含已经实现的方法;抽象类则完全可以包含普通的方法。 (3)接口里只能定义静态常量属性,不能定义普通属性;抽象类里既可以定义普通属性,也可以定义静态常量 (4)接口不包含构造函数;抽象类可以包含构造函数,抽象类里的构造函数并不是用于创建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。 (5)接口不包含初始化块,但抽象类可以包含初始化块 (6)一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java的单继承不足 Java面向对象 标签:定义静态方法 nat 默认方法 开箱 直接 维护 地方法 round 如何 原文地址:https://www.cnblogs.com/Blcjme/p/14384812.html什么是面向对象,什么是面向过程,二者的优缺点?
概念:
举例说明:
面向过程的优缺点:
面向对象的优缺点:
什么是类、对象、二者之间的关系?
什么是对象的三大特征?
封装:
继承:
多态:
概念:
体现方式:
多态的条件:
多态的类型
四种访问修饰符的区别?
访问权限
同类
同包
子类
不同包
public
√
√
√
√
protected
√
√
√
default
√
√
private
√
成员变量和局部变量的异同?
相同点:
不同点:
1.声明的位置不同:
2.修饰符数量不同:
3.初始化值:
4.内存存放的位置不同:
5.作用域不同:
方法重载(overload)和方法重写(override)的区别?
Java类中的构造方法的那些事
注意点:
Java类中参数的那些事
1.对于基本数据类型来说,形参的操作不会影响实参
2.对于引用数据类型来说,形参的操作会影响实参,因为传入的是堆里面的地址,形参和实参指向的是同一块地址值Java程序内存中的那些事
super关键字和this关键字的区别?
1.当子类和父类的属性名同名时,默认会使用子类的属性,我可以通过"super.属性名"调用父类的属性
2.子类重写父类方法后,如果子类想再次调用父类重写前的方法,可以super.方法名 调用父类重写前的方法
3.super修饰构造方法,通过在子类构造方法中使用"super(形参)"来显示的调用父类的构造方法注意点:
在构造方法内部"this(形参)"或"super(形参)"只能出现一个
在构造方法中,如果不显示的使用"super(形参)"的方式调用父类对应的构造方法,默认会调用父类的构造方法,只是给你隐藏掉了Final关键字和static关键字
1. 实例变量:我们创建了多个对象,每个对象都独立有一套类中非静态变量。当修改了其中一个对象的非静态变量时,不会导致其他对象同样的属性值的修改
2. 静态变量:我们创建了多个对象,多个对象共享同一个静态变量,当其中一个对象对静态变量进行了更改,会导致其他对象同样的属性值的更改
static修饰属性:
(1)这个属性就不在属于对象了,而属于类本身,只要通过这个类创建的对象,都可以共享该静态变量,实例变量属于对象的
(2)静态变量是随着类的加载而加载,实例变量随着对象的创建而加载
(3)静态变量的加载时机早于对象的创建
(4)由于类只会加载一次,静态变量在内存中也只有一份
static修饰方法:
(1) 这个方法就不在属于对象了,而属于类本身。
(2) 静态方法是随着类的加载而加载,"类名.方法名"的方式调用
(3) 静态方法中只能调用静态变量和静态方法,非静态方法可以调用静态方法和静态变量,也可以调用非静态变量和非静态方法
(4) 在静态方法里面不可以使用this和super关键字,因为这个两个关键字是有了对象以后才存在,静态方法早于对象的创建
开发中,如何确定一个属性使用static进行修饰呢?
如果一个属性需要被多个对象共享,使用static进行修饰。
开发中,如何确定一个方法使用static进行修饰呢?
工具类会使用static进行修饰方法。比如jdbc工具类,collection连接对象。操作静态变量的方法,一般使用static进行修饰抽象类、抽象方法的那些事?
接口和实现类的那些事?
接口是什么?
接口的特点:
实现类:
2.实现要重写接口里面所有的抽象方法(实现类是抽象类除外)
3.一个实现类可以实现多个接口,每个接口之间用","号隔开
4.如果一个类在继承一个类的同时实现一个接口,那么继承要放到接口实现的前面。类名 extends 父类 implements 接口名接口和抽象类的相同点和不同点?
相同点:
(2)接口和抽象类都可以包含抽象方法,实现接口和抽象类的类都必须实现这些抽象方法,否则实现的类就是抽象类。
(3)接口里可以定义静态方法;抽象类可以定义静态方法不同点:
上一篇:C#程序执行Python脚本
下一篇:Java基础学习12--注解