java基础-类-抽象类-接口(自学笔记)
一、类 class
定义:具有相同属性(特性)和方法(行为)的一类事物 的抽象的总称
例如:人类,动物,车,屌丝类。是一种类别,世界上所有的事物都可以分类,在计算机中java都能进行对应和体现
类的三大特性:封装,继承,多态
封装:属性的私有化
继承:针对类
多态:针对方法
- 重载 重写
- 先上转型 针对参数
这篇博客有类的三大特性的详细解释:点击进入
二、属性 attribute property(相同特性) 成员变量
属性定义:描述类中具有某种特性
成员变量和普通变量的区别:
- 作用域(生命周期):
成员变量:全局变量,在类中任何方法都能使用。存活在整个类中
普通变量:局部变量,存在于某个方法内,存活周期就在其方法内。 - 内存
成员变量:存放在内存中的堆
普通变量:存放在内存中的栈
三、方法 method
定义:描述类中的某一行为,放在属性定义的下面
例如:人有吃喝拉撒睡,还有撩妹,都可定义一个方法去实现
方法分类:有无参数,有无返回值
总结:类包含属性和方法
注意:软件工程中说明,每一个方法是独立,功能单一。不能出现一个方法执行n个逻辑,如果真的有,也要把逻辑分到其他的方法中去实现。
问:为什么要定义类?
答:是为了使用。
问:如何使用?
答:如果你没对象的话,可以new一个对象出来,这样你就不孤单啦!
四、对象
定义:用于描述客观事物的一个实体
- 对象是类的实体。
- 存放在内存的堆中
- 使用对象,都是用对象调用方法
面向对象的特性:指挥
五、抽象类
抽象类=普通类 + 抽象方法
修饰符:abstract
- 抽象类是类
- 多了抽象的方法,类必须是抽象类
- 抽象方法没有方法体。
- 抽象类不能实例化,不能创建对象
- 抽象类必须有子类,必须实现所有的抽象方法。
- 如果子类没有实现所有的抽象方法,子类也是抽象类。
- 是类,仍旧满足多态特性,所以方法的参数使用抽象父类的引用。
在开发过程中,对于有些方法一定要实现,则会被此方法在父类中声明为抽象的方法,对于有些方法不一定实现,在抽象父类中声明成普通的方法,子类可以选择性的对父类的普通方法进行重写来完成相应的逻辑。
例如listener类 Observer观察者模式
- 代码 语法
- 代码映射出人类的注解 int age=18;
- 开发应用中
- 面试中
例如:
Door 门 abstract
Open{}
Close{}
普通门 防盗门 保险柜门
面向抽象编程,不面向具体编程。
抽象类的限制:
- 抽象类不能使用final关键字
- 抽象类虽不能实例化,但是可以像普通类一样,拥有属性和构造方法,子类可以通过调用抽象父类的构造方法来完成子类自己的构造。
六、接口
**定义:多个类共同的行为规范,这些行为是与外部交流的通道,通常是定义一组公用方法
定义接口关键字:interface
接口继承关键字:extends
- 接口定义方法只能是抽象方法(public abstract),类方法,或者默认方法,普通方法不能有方法体,但是类方法、默认方法必须有方法体
public interface Output {// 接口里定义的成员变量只能是常量int MAX_CACHE_LINE = 50;
// 接口里定义的方法只能是普通方法void out();void getData(String msg);
// 在接口中定义默认方法,需要使用default修饰default void Printable(String... msgs) {for(String msg:msgs) {System.out.println(msg);}}
// 在接口中定义类方法,需要使static修饰static String staticTest() {return "在接口里的类方法";}}
// 注意 一个java源文件里最多只能有一个public接口,
//如果一个源文件里定义了一个public接口,
//则该源文件的主文件名必须与该接口名相同
// 接口主要有如下用途
// 定义变量,也可用于强制类型转换
// 调用接口中定义的常量
// 被其它类实现
public class OutputFileldTest {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(lee.Output.MAX_CACHE_LINE);
// 赋值会出现编译异常// lee.Output.MAX_CACHE_LINE = 20;System.out.println(lee.Output.staticTest());}}
- 接口支持多继承。类只能单继承
interface interfaceA{int PROP_A = 5;void testA();
}interface interfaceB{int PROP_B = 6;void testB();
}interface interfaceC extends interfaceA,interfaceB{int PROP_C = 7;void testC();
}public class InterfaceExtendsTest {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(interfaceC.PROP_A);System.out.println(interfaceC.PROP_B);System.out.println(interfaceC.PROP_C);}
}
接口主要用途:
- 定义变量,也可用于强制类型转换
- 调用接口中定义的常量
- 被其它类实现
接口和抽象类异同:
- 都不能被实例化,都位于继承树的顶端,用于被其他类实现和继承
- 都可以包含抽象方法,实现接口或继承抽象类的普通方法都必须实现这些抽象方法。
- 接口只能包含抽象方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。
- 接口不能定义静态方法,抽象类可以定义静态方法。
- 接口只能定义静态常量,不能定义普通成员变量。抽象类都可以。
- 接口不包含构造器,抽象类包含,但是并不用于创建对象,而是让子类调用完成属于抽象类的操作。
- 接口不包含初始化块,抽象类则完全包含
- 一个类最多只能有一个直接父类,包括抽象类,但是一个类可以直接实现多个接口,弥补java单继承不足的问题。
java基础-类-抽象类-接口(自学笔记)相关推荐
- [Java基础]类和接口的关系
类和接口的关系:
- 初学Java基础学习——抽象类和接口的区别
初学Java基础学习--抽象类和接口的区别 一.关键字 1)抽象类的关键字 abstract class A{//定义一个抽象类: } class Test extends A{//子类使用exten ...
- 传智播客 刘意_2015年Java基础视频-深入浅出精华版 笔记(2015年10月25日23:28:50)
day01 win 7系统打开DOS有趣方法:按住shift+右键,单击"在此处打开命令窗口"(注意:在此处可以是任何的文件夹,不一定是桌面) 用DOS删除的文件不可以在回收站恢复 ...
- 3、java基础:抽象类与接口的区别
抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样 ...
- java 类 抽象类 接口_Java抽象类和接口
抽象类和接口 一.抽象类和抽象方法 对于抽象类,首先需要介绍抽象方法,而抽象类因抽象方法的存在而存在 1.抽象方法 (1)必要性: 有些父类方法不确定如何写方法体,但是对于继承它的子类又必须用到这个方 ...
- Java基础概念 | 抽象类与接口
抽象类与接口 定义 用法 定义 抽象类:包含抽象方法的类. 包含抽象方法的类必须通过abstract关键字声明为抽象类,否则编译器会报错. 抽象方法需要通过abstract关键字进行声明. 抽象类可以 ...
- java 实现类转接口_JAVA 基础 / 第二十九课:接口与继承 / JAVA中的对象转型
2018-03-19 一.明确引用类型与对象类型的概念 引用类型与对象类型的概念 在这个例子里,有一个对象 new ADHero(), 同时也有一个引用ad 对象是有类型的, 是ADHero 引用也是 ...
- 传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)
day24 1.多线程(JDK5之后的Lock锁的概述和使用) Lock: void lock(): 获取锁. void unlock():释放锁. ...
- Java基础知识 廖雪峰教程笔记
Java基础知识 Java基础知识 java简介 名词解释 运行Java程序 Java基本数据类型 模块 包装类型 记录类 异常处理 Java异常 使用Commons Logging 使用log4j ...
最新文章
- nio selector
- java 给窗口加菜单_程序求助:如何给窗口添加菜单?
- 初级脚本Ubuntu18-20.04版本以上设置静态IP地址
- 写文章 使用conda管理python环境
- 菜鸟requireJS教程---2、基本知识
- 【codevs 1315】1315 摆花2012年NOIP全国联赛普及组(dp)
- onenote怎么同步到电脑_详解onenote保存与同步④:本地笔记奇葩的丢失经历
- java mysql 多表查询_解析Mysql多表查询的实现
- Codeforces Round #703 (Div. 2) Guessing the Greatest C1 C2 二分
- java修改原有txt文件_(转)Java创建txt文件并进行读、写、修改操作
- 第二次提交文件 merge上次版本
- python学习笔记(七):面向对象编程、类
- IO流之流的操作规律
- 前端笔记之Vue(五)TodoList实战拆分store跨域练习代理跨域
- IE缓存文件提取器 视频,音频,图片一网打尽
- 搭建离线版keras中文文档
- SAPscript Forms 教程
- 用Python实现一个电影订票系统
- 联想硬盘保护系统安装
- ffmpeg下载安装,以及springboot 整合视频点播学习