Java面向对象

面向对象

抽象过程:
+抽象过程就是将很多的实际存在的对象聚合在一起并提取出来相似的属性和方法的过程
+属性
++对于一个对象描述的过程中,使用名词进行描述的,可以直接赋值的那些特征叫做属性
比如年龄,姓名,职业等等都是名词,可以直接赋值
+方法
++描述某些对象时使用的动词特征叫做对象的行为,这种内容一般指代的一系列的动作,并通过这一系列的动作得到一个结果的过程

封装:
就是将抽象过程中得到的属性和方法重新打包,并且让原来散乱的属性和方法成为一起出现和一起销毁的过程叫做封装

封装一个类的时候,我们管属性叫做成员变量,也可以直接将叫属性:属性是直接写在类当中的(写在方法里面的叫做局部变量)
属性在不赋初始值的时候其实是有默认值的,如果是基础类型默认值分别是:
整形–0;
浮点型–0.0;
布尔型–false;
字符型–’ '(空格);
对象型–null;eg:String

对于封装的时候,我们管动作或行为一般都处理成一个方法,方法的定义是一系列的动作得到结果的过程,方法需要有返回值类型;
其声明的格式:
访问控制 返回值类型 方法名(参数列表){方法体}
eg:public void foo(int a,String b) { }
方法也是和属性平级的,都是直接定义在类里面的
返回值时,使用return关键字,当修饰返回值内容的关键字是void时,return后不跟任何内容,负责需要跟一个和要求的返回值类型一样的返回值,return后,方法立刻结束,后续的代码都没有执行的可能性

特殊的方法:构造方法是一种特殊的方法,
其特点是:
1、方法名必须和类名保持一致
2、这个方法是没有返回值的
3、这个方法是使用在new关键字之后的,用来告诉JVM我们的对象应该如何创建

访问控制:分成四个类型,默认类型是package
public : 公共的,代表被修饰的属性、方法和类可以在任何其他的类型中使用
protected : 被保护的,只有在友源类中可见
default 或者叫做package:不会显示的声明,特指在同胞内可见的
private :私有的,指被private修饰的方法、类、属性只有本类中可以使用

this 关键字:特指调用自己的本类对象

继承:
继承其实是在扩展的过程中,主要作用是在原来的类型基础上(类型通过封装而来),进行属性和方法的扩展
继承很大程度上提升代码的重用程度

继承是两个类之间的关系,使用extends关键字来实现,其格式:
class 子类 extends 父类 { }
如此操作后,父类中的属性和方法将会平移到子类中(子类中也会具有父类中的属性和方法)

继承的特点
Java中类范畴的继承是单继承,当出现一个类型需要继承多个类型时,Java支持链式继承
子类在继承父类的时候,可以对父类中的方法进行修改,这个过程叫做重写
当在场景中调用父类的时候,可以使用子类对象进行替换,这个过程我们叫做里氏替换原则
当我们在场景中调用某一个对象的方法时,如果这个方法的首次声明在父类中,那么调用时,会先判断子类中是否重写该方法,如果没有找到重写过程,则到其直接父类中去寻找是否有该方法的重写过程,一直找到最初的声明点
在修改重写的过程中可以改变方法的访问控制级别,但是只能向更容易被访问到的方向去改变,不能向不容易被访问到的方向去改变
构造方法不能被继承
继承是子类的构造方法必须首先执行父类的构造方法,其中使用super关键字代表父类对象

抽象类
抽象关键字: abstract
abstract可以修饰类和方法
abstract修饰类,代表这个类是抽象类,具有承载抽象方法的能力
abstract修饰方法,代表这个方法是抽象方法,没有方法体
抽象类的格式:
public abstract 类名 { }
抽象方法的格式:
访问控制 abstract 返回值类型 方法名 { 参数集合};
注:没有方法体
抽象类不能创建对象,因为抽象方法不能使用
抽象类和抽方法的存在就是为了定义一种状态,这种状态是父类指定子类当中必须具有某个方法,但是并不知道子类中这个方法应该如何实现,同时要求子类必须自己确定应该如何实现跟这个方法,而父类不会给出默认实现
子类在继承一个抽象类的时候,必须要对一个抽象方法进行处理,抽象方法有两种:
一:如果子类是普通类,则必须重写抽象方法,将其变成实例方法
二:如果子类是抽象类,可以不重写抽象方法,可以将这个抽象方法的实例过程传递给自己的子类
对比普通类
相同点:
抽象类和普通类都有构造方法;
都可以拥有属性;
都可以拥有普通方法;
不同点:
抽象类可以有抽象方法,普通类没有;
抽象类不能直接创建对象,普通类可以;
匿名类
作用:
直接使用抽象类的类名直接创建对象:
格式:
new 类名() { 重写抽象方法 };
含义:
就是一个没有名字的该抽象类的子类

多态:
重写多态
当两个不同的子类都实现了同一个子类时,这两个子类都重写了父类中的某一个方法;
场景中,我们通过里氏替换原则创建了两个不同的对象,这两个对象都调用了相同的名字和方法;
其展现出来的结果和执行流程是完全不同的,这个过程,我们就叫做重写多态,是多态的一种

重载多态
是方法的重载过程:
方法的重载过程是指在同一个类中,出现了相同的方法名,但是这些方法的参数列表并不相同,于是这些方法被认为是不同的方法,可以同时存在;
在场景中,我们调用了某一个方法的时候,会发现方法名字一直但是参数列表不一致也会出现多态现象,这个过程被成为重载多态;
注::重载多态是有认知冲突的,就是一部分人不认为重载是多态的一种表现,所以面试的时候,很少(小于0.01%)有可能性出现这个问题

补充:
实例化:
就是使用通过封装得到的类型创建一个对象的过程
实例化,我们可以理解成抽象的反面,是将一个抽象的东西编程实际存在的东西的过程
在代码中,实例化就是通过new关键字在堆内存中开辟一个可见并将创建的对象保存在这个堆空间的过程

接口
接口声明时,使用的关键字是interface
格式:public interface 接口名 { }
接口中不能拥有普通的属性,所有的属性都是:
public static final 类型的
接口中的所有常规方式定义的方法都是抽象方法,在定义过程中,这两点不用显示的声明出来
final
修饰属性
不能被修改
修饰方法
继承不能被重写
修饰类
不能被继承
static
可以修饰类型,变量,方法,代码块
接口没有构造方法
接口与接口之间的关系是继承关系,而这个时候的继承关系是可以出现多继承的,所以我们说Java只支持单继承这句话是错误的,接口支持多继承
类与接口之间关系是实现关系;使用的是implements关键字,只带一个类实现了某一个接口,当实现了这个接口的时候,那么这个类中就具有了这个接口所定义的所有的方法,从这个角度出发,借口就是在规定类型中必须要有哪些方法
Java里面支持多实现,一个类可以同时实现多个接口
对比类
类可以有属性,可以有普通方法;
抽象类还可以有抽象方法;
但是接口只能有抽象方法;
类可以有构造方法;
接口没有构造方法;
普通类可以创建对象;
抽象类不能创建对象;
接口也不能直接创建对象;
如果要使用接口创建对象,那么和抽象类一样,都是使用匿名类来创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值