JAVA面向对象程序编程
4.1 类
面向对象四大基本特征:封装、继承、多态和抽象
每个对象都有两个特征:属性(成员变量)、行为(成员方法)
4.1.1 类
1)定义类
格式:【访问修饰符】 class 类名{
所含变量定义;
}
注:访问修饰符有4种:public、private、protected和默认的
2)属性
对象所拥有的静态特征即为属性
3)方法
对象执行操作的行为称为类的方法
4.1.2 使用类实例化对象
1)创建对象或方法
(1.)创建对象格式:
类名 对象名=new 类名( );
注:1.左边的类名:对象的数据类型
2.右边的类名():类的构造方法
(二)创建方法格式:
【访问修饰符】 方法类型 方法名(形参列表){
方法内容;
}
2)访问对象中的成员
(一)访问成员变量:
格式:对象名.成员变量名;
(二) 访问成员方法:
格式:对象名.方法名(参数值列表);
4.2 认识成员方法
4.2.1 成员方法
1)访问权限:
public > protected > 默认的 >pribate
2)方法名:
1.合格的标识符
2.首写字母小写,若干个单词,后面的首字母大写
eg:setDefaultCloseOperation( ){ }
3)形参:
可以有0个或多个 eg:void fun(int x,……)
4)方法体:是否有return 语句
4.2.引申 访问器和设置器
当我们在一个类中用private修饰了一个或多个属性后,这一个或多个属性在其他类中就是不能访问的了,这时我们就可以使用访问器和设置器在其他类中访问或者是控制其他类可以访问和更改部分属性值
4.3 认识构造方法
4.3.1 构造函数
(一)定义时应遵循
(1.)函数名称与类的名称相同
(2.)不含返回类型
(二)格式
类名 对象名=new 类名(传给构造函数的参数列表);
注:(1)在对象的生命周期中,构造函数只有在对象被创建时,才会被调用
(2)构造函数可以被重载,也就是说在一个类中可以定义多个构造函数
(3)在一个类中如果没有定义构造函数,系统会自动为这个类产生一个默认的构造函数,该系统没有参数,也不做任何事情
5.1 静态变量和静态方法【static】
5.1.1 静态变量(也称类成员)
(1.)它属于整个类所有,而不是某个对象所有,被类的所有对象共享
(2.)静态变量可以通过“对象名.变量名”来访问,也可以通过“类名.变量名”来访问
(3.)静态类成员在类被载入时创建,就会为其分配空间直到该类被卸载时才会被回收
5.1.2 静态方法(也称类方法)
1.静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态类成员;
2.静态方法中不能直接调用非静态变量,需要通过对象来访问非静态方法;
3.如果系统在静态方法中调用非静态类变量,可以通过创建类的对象,然后通过对象来访问非静态变量;
4.在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
5.1.3 静态代码块(初始化器)
(一)格式:
static { 初始化列表; }
eg:static { int a; double b; }
(二)意义:
当类被载入时静态代码块被执行,且只被执行一次,静态代码块经常用来进行类属性的初始化。
(三)执行顺序
静态初始化块–>普通初始化块–>构造方法
public class Demo1{Demo1(){System.out.printf("hoell!!");//默认构造函数
}
Demo1(int a){System.out.printf("hoell!!");//有参构造函数重载
}
int a,b; //定义成员变量
public static void fun(int a){System.out.printf("hoell!!");}//定义静态成员方法
}
5.2 认识封装
5.2.1 封装的概念
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的访问和操作。
5.2.2 实现封装
(1.)修改属性的可见性:设为private
(2.)创建getter/setter方法:用于属性的读写
(3.)在getter/setter方法中加入属性控制语句:对属性值的合法性进行判断
5.3 包
5.2.1 包定义
管理JAVA文件,解决同名文件的冲突
5.2.2 访问包中的类
格式:import 包名.*
作用:导入该包中的所有类
6.1 认识继承
6.1.1 extends 单继承
继承的本质:代码复用(由已有类创建新类的过程)
继承了:父类中非private修饰的成员(成员变量和成员方法)
6.1.1 构造方法的执行顺序
(1.)先执行父类的构造方法,在执行子类的构造方法
(2.)默认情况下,调用的是父类无参数的构造方法,调用的是父类无参数的构造方法,因为子类构造方法中有隐式的super()
(3.)可以通过super()更改调用父类的构造方法
(4.)默认情况下,如果父类没有无参构造方法,子类创建会出错
6.2 覆盖概念
子类中有与父类同名的成员变量和成员方法
覆盖可分为:(1.)变量的覆盖–>变量的隐藏
(2.)方法的覆盖–>方法重写
注:子类重写的方法,与父类相比,拥有相同的访问权限、方法名、参数
访问权限>=父类方法的访问权限
6.2.2 supper关键字
1)使用场景:在子类中使用
2)调用父类的成员(成员变量、成员方法):super.*** 或 super.xxxl()
3)调用父类的构造方法:super(【参数列表】);
6.2.3 this关键字
1)使用场景:在本类中使用
2)调用父类的成员(成员变量、成员方法):this.*** 或 this.xxxl()
3)调用父类的构造方法:this(【参数列表】);
6.3 多态
6.3.1 认识多态
多态可以分为静态多态和动态多态,方法重载是静态多态,父类引用可以指向子类对象是动态多态
6.3.2 使用多态
(1.)函数传入的形参可以是父类类型,而实际传入的可以是子类对象
(2.)函数返回类型是父类类型,而实际返回的可以是子父对象
6.3.3 父类和子类对象的类型转换
(1.)子类类型对象转换成父类类型:隐式/自动类型转换(无风险)
(2.)父类类型对象转换成子类类型:强制转换型(有风险)
6.4 抽象类和接口
6.4.1 抽象类
(一)抽象类特征
1.抽象类不能被实例化
2.抽象方法必须被重写,除非子类也是抽象类
3.在抽象类中可以含有普通成员函数
6.4.2 接口
(一)格式:【修饰符】 interface 接口名 [extends 父接口1,父接口2] {
undefined 零个到多个常量定义/零个到多个方法定义
}
JAVA面向对象程序编程相关推荐
- Java面向对象 网络编程 上
Java面向对象 网络编程 上 知识概要: (1)网络模型 (2)网络通讯要素 (3)UDP TCP 概念 (4)Socket (5)UDP TCP 传输 ...
- java面向对象程序练习_5本面向经验丰富的程序员的高级Java书籍
java面向对象程序练习 Sometimes back I wrote an article for Best Core Java Books for beginners, today I am sh ...
- 小赵老师课堂开课了 !天道酬勤,相信自己学到就是赚到,一起来学习吧--- java面向对象程序设计基础的知识!!!!
大家!我是下一个pony,今天我又来更新帖子了~ 今天我们讲解的是java面向对象程序设计基础的知识~我们从以下几个方面来进行简单的讲解: ============================== ...
- java面向对象程序课本,Java面向对象程序设计
出版说明 前言 第1篇 Java程序设计基础 第1章 Java语言入门 1.1 Java的诞生 1.2 Java的特点 1.3 Java程序的开发工具 1.4 Java运行环境 1.4.1 JDK的下 ...
- Java面向对象程序思想
Java第六天 面向对象程序思想 一.面向过程 分析出解决问题的步骤,然后用函数(Function )或者程序过程(Poceduere )把这些步骤步一步地实现,程序执行的过程就是按一定顺序调用函 ...
- Java面向对象程序基础设计之第三章
3.1.1 自定义包 如果在程序中没有声明包,类将被存放在default的包中,该方式不被提倡. 语法: package 包名 包命名规范: 包的命名规范应当体现出项目资源良好的划分 自定义标签类所在 ...
- Java面向对象的编程⑤面向对象
今日内容:java面向对象 1面向对象的思想 面向对象和面向过程区别: 面向对象是相对于面向过程,面向过程指的功能行为,面向对象指将功能封装对象中,强调的是功能的对象 面向过程:打开门大象放进去关闭门 ...
- java面向对象程序_面向对象编程基础(java)
面向对象编程基础 1.1 面向对象概述 在程序开发初期,大家使用的是结构化开发语言,也就是面向过程(opp),但随着市场需求剧增,软件的规模也越来越大,结构化语言的弊端也暴露出来. 开发周期无休止的拖 ...
- Java面向对象程序开发——网络编程入门知识
目录 七.网络编程入门知识 软件结构 网络通信协议 协议分类 网络编程三要素 TCP通信程序 概述 Socket类 构造方法 成员方法 ServerSocket类 构造方法 成员方法 简单的TCP网络 ...
最新文章
- Java程序员从笨鸟到菜鸟之(八十七)跟我学jquery(三)jquery动态创建元素和常用函数示例
- Python基于socket实现的TCP服务端
- 解锁营销自动化行为触发,神策数据《营销自动化应用基准报告 2021》助力企业增长
- linux mysql 5.7 双机热备_2017年5月5日 星红桉liunx动手实践mysql 主主双机热备
- [深度学习] 自然语言处理--- 基于Keras Bert使用(下)
- 03-body标签中相关标签
- 探讨一种 Java 实现分组的方法
- MAC APP 签名证书查看
- mysql数字加减乘除_mysql加减乘除
- 新买的笔记本计算机内存不足,笔记本内存不够怎么办_笔记本内存不足如何解决...
- 在日本的软件工程师之路
- 滴滴抢单 java_今天我体验了下传说估值100亿美金的「滴滴拉屎」App,出门再也不愁找厕所了...
- 阿里云建站百度收录吗?
- linux est 时间,Linux 时间标准简介
- 10019---访问远程Redis服务。Connect to Remote Redis Server
- Windows安装Dolby Vision 杜比视界插件
- 互联网巨头:必须要裁员吗?
- 11.2.5 云计算、大数据时代
- 苹果2017年漏洞学习总结
- 常见服务器返回状态码