Java基础系列1:三大特性

Java基础系列1:三大特性

本文是作者的读书笔记和心得整理,部分内容来源于网络,如有侵权,请联系作者。

何为对象

对象就是instance,也可以说是实例,指的是现实世界中的实体,比如一个人,一个小狗,一粒沙子,都是一个对象。
对象有以下的特征:

  • 对象具有属性和行为
  • 对象具有唯一性
  • 对象都是某个类别的实例
  • 一切皆为对象,真实世界中的所有事物都可以视为对象

面向对象和面向过程的区别

面向过程的本质是先后顺序,也就是先有一个流程,然后对每个流程都使用函数一步一步实现,从而最后实现整个过程。
典型语言是C语言。

面向对象的本质是函数,每个函数完成一个功能,有输入和输出。最后有一个主函数按照想要的顺序调用这些函数即可。

面向过程的缺陷是在初始设计阶段,就要完整的设计好每个模块的流程,每个小模块要干什么,要处理哪些数据都要想清楚,不能乱了次序;
设计不够直观,非常不人性化,代码的复用性非常差。

面向对象的优点是可以多次复用,最小的代码单元是类,可以更好的开发不同的模块和复用。

核心特性1:继承

继承就是子类继承父类的行为,比如猫是动物,动物可以呼吸,所以猫也可以呼吸;但是猫有的特性父类未必有,比如猫有爪子,而动物未必都有爪子。
示例图片:

(图片来源于https://www.runoob.com/wp-content/uploads/2013/12/14B0951E-FC75-47A3-B611-4E1883887339.jpg)

单继承和多继承

Java中默认使用的是单继承,并不支持多继承,从而避免继承的两个父类中同名方法冲突的困扰。而且继承的内容仅限于public的方法,private的方法并不会被子类继承。
但是可以通过内部类继承其他类来强行实现多继承,具体实现方法是创建一个匿名内部类继承另外一个类A,从而调用A中的函数来实现本类函数。
示例代码:

public class Son extends Father{
public void go () {
System.out.println("son go");
}
public void eat () {
System.out.println("son eat");
}
public void sleep() {
System.out.println("zzzzzz");
}
public void cook() {
//匿名内部类实现的多继承
new Mother().cook();
//内部类继承第二个父类来实现多继承
Mom mom = new Mom();
mom.cook();
}
private class Mom extends Mother {
@Override
public void cook() {
System.out.println("mom cook");
}
}
}

函数的重写

当子类和父类中的函数名,变量,返回值都完全一致时,优先调用子类函数。
注意必须完全一致,否则只会重载。Java是允许多个函数名一样但是参数不同的。

继承的初始化顺序

1,先初始化父类,再初始化子类;

2,先执行初始化对象中属性,再执行构造方法中初始化;

所以整体的执行顺序是:
父类对象属性初始化—->父类对象构造方法—->子类对象属性初始化—>子类对象构造方法

final关键字

final类:不允许被继承
final方法:不允许被重写
final属性:初始化必须有值或者在构造方法中赋值,无默认值,之后无法更改
final变量:只能初始化的时候赋值,所以是常量

核心特性2:多态

多态是指一个行为具有多个不同的表现形式,体现在java中就是实现同一个接口的同名方法,可能有完全不同的效果。
比如都实现接口run,一个是程序‘运行‘,一个是人’跑‘。取决于到底是哪个类实现了这个接口。
如下图所示:

(图片引用自:http://c.biancheng.net/uploads/allimg/181017/3-1Q01G4095bW.jpg)

一个很大的好处是需要更新实现方式的时候可以无需修改之前的索引,而是重新定义一个新的继承接口就好啦

重写和重载

重写适用于函数的名字和参数完全一致,此时子类函数覆盖父类函数;
重载适用于函数名字相投,参数不同,此时根据传入参数调用不同的函数.

核心特性3:封装

封装主要体现在私有属性和私有方法上,也就是一个类的私有属性和函数只能被当前对象所调用,外界只能访问到public的属性和方法。
封装的好处是保护自己的代码不被外部修改,或者内部的改动不为外部所知,比如U盘的内部逻辑我们并不关心,只要插上符合标准就行。
主要使用get/set方法进行实现.

this关键字

调用本类的实例,函数和属性

内部类

几个原则:
1,不允许其他类访问内部类
2,内部类可以直接访问外部类的所有资源,包括private

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值