JAVA入门基础6**(系列更新)———面向对象(二)的继承,抽象,接口
**JAVA入门基础6**(系列更新)———面向对象(二)的继承,抽象,接口
- 面向对象2
- 大致总结
- 继承
- @Override
- super();的应用
- 调用顺序
- 构造顺序
- 多态
- 什么是多态???
- 多态有什么用???
- 多态使用方法(概念)???
- 造型
- 什么是造型???
- 造型要知道的概念???
- 造型具体方法举例???
- 向上向下造型
- 造型总结
- 抽象
- 什么是抽象???
- 抽象类和抽象方法(abstract)
- 两种抽象
- 接口
- 接口概念
- 知识点
- 上课内容:
- 接口的一些机制
- 接口存在的意义
面向对象2
大致总结
- 封装:封装就是将客观的事物抽象成类,类中存在属于这个类的属性和方法。
- 继承:继承就是把父对象继承过来,这样子类就存在了父类的操作方法,java是单继承,就是只能继承一个父对象。
- 多态:多态就是程序中允许出现重名现象,java实现多态的方式有方法重载和成员变量覆盖两种形式。
继承
上课的时候我们讲解的是这个例子
现在需要制作一个媒体资料库;
可以向资料库存放图片、视频;
资料库可以对其包含的所有的图片/视频进行遍历,展示其信息;
图片:title;size;format;px;isCopy
视频:title;size;format;playingTime;isCopy
我们来自己做一个新例子
现在需要制作一个学生系统管理库;
可以输入存放姓名,学号,学生的照片;
资料库可以对学号,姓名,照片进行遍历,展示其信息;
学号:usernum
姓名:username
头像照片:title;size;format;px;isCopy
自我介绍:title;size;format;word
public class demo1 {ArrayList<Item> items=new ArrayList<Item>();public void add(Item item){items.add(item);}public void list(){for(Item zz:items){zz.show();}}
}
public class Item {private String username;private int usernum;private String title;private int size;private String format;public Item() {}public Item(String username,int usernum,String title, int size, String format) {this.username = username;this.usernum=usernum;this.title = title;this.size = size;this.format = format;}public void show(){System.out.println( "/"+username"/"usernum+":"+title+"."+format);}
}
public class zaopian extends Item {private int px;private boolean isCopy=true;public zaopian(String title, int size, String format, int px) {super(title,size,format);this.px = px;}@Overridepublic void show(){System.out.print("学生照片:");super.show();}
}
public class word extends Item{private word;public word(String title,int size, String format, String word) {super(title,size,format);this.word = word;}
@Override
@Override-------------------这个用于重写父类方法用的,用这个注解可以避免方法名跟参数写错。
@Overridepublic void show(){System.out.print("自我介绍:");super.show();}
}
super();的应用
super();方法向父类传递对应的参数,
调用顺序
子类调用方法时优先调用自己
构造顺序
父类构造->子类的定义初始化->构造器初始化
多态
什么是多态???
(自己的话解释):
多态就是对同一个对象,在不同时刻表现出来的不同形态;
(上课的内容):
一个变量可以管理自己或子类的对象的现象叫多态
多态有什么用???
子类的对象可以被当作父类的对象来使用
多态使用方法(概念)???
- 赋值给父类的变量
- 传递给需要父类对象的函数
- 放进存放父类对象的容器里
public class way1 extends did{@Override
public void doit() {System.out.println(“way1 done”);
}
//自己独有
public void way1pro(){System.out.println(“way1 completed ”);
}
}public class way2 extends did {@Override
public void doit() {System.out.println(“way2 done);
}
//自己独有的方法
public void way2pro(){System.out.println(“way2 completed ”);
}
}
造型
这里还是要较多的以上课内容为主
什么是造型???
- 把一个类的实例对象赋值给另外一个类的变量的过程叫做造型
造型要知道的概念???
父类的变量可以管理子类的对象(向上造型)
子类的变量不能管理父类的对象
造型具体方法举例???
此处引用上课的例子:
Vehicle v=new Vehicle();Car c=new Car();v=c; //可以c=v; //编译错误!会爆红
向上向下造型
下为举例区分向上向下造型;
class A {}class B extends A {}A a = new A();B b = new B();A a1 = b;// 向上造型B b1 = (B) a1; // 向下造型B b2 = a; // ClassCastException,a的类型是A,实例化也是A
除非用向下造型,c=(Car)v; 但是前提是v管理的的确是一个Car的对象
需要注意事项:
- 向上造型总是安全的,是默认的,不需要加括号
- 向下造型是强制的,是不安全的,可能会发生异常
- 造型不是类型转换
造型总结
**向上造型:***父类引用指向子类对象(子类型,实例也是子类的实例化);***向下造型:***子类引用指向父类对象(父类型,实例是子类的实例化);*
抽象
什么是抽象???
abstract修饰符修饰的对象
现在需要做三个类
矩形,三角形,圆形
每个类里面都需要有计算周长的方法getPerimeter();
和计算面积的方法getArea();
抽象类和抽象方法(abstract)
- 抽象方法——表达概念而无法实现具体代码的方法
- 抽象类——表达概念而无法构造出实体的类
- 有抽象方法的类一定是抽象类,但是抽象类不一定只有抽象方法
- 继承自抽象类的子类一定要重写父类中的抽象方法
两种抽象
- 与具体相对
- 表达概念而非实体
- 与细节相对
- 关注大局而不过分在意具体实现
接口
接口概念
接口就是一个规范和抽象类比较相似。它只管做什么,不管怎么做。通俗的讲,借口就是某个事物对外提供的一些功能的声明,其定义和类比较相似,只不过是通过interface关键字来完成
知识点
1.接口属性默认:public static final-----;
2.接口方法默认:public abstract-----;
上课内容:
现在有一个手机类Phone,和人类Person
两者都有发出声音的方法Sound();
我们想把这个公共的方法提取出来但是又不违和;
public interface Soundable{public void sound();
}
public class Phone implements Soundable{@Overridepublic void sound(){System.out.println("叮铃铃");}}
public class Person implements Soundable {@Overridepublic void sound(){System.out.println("你好");}
}
接口的一些机制
- 接口里的所有方法都是抽象方法,即使前面没有加abstract声明,系统会自动默认
- 接口里的所有变量都是静态变量
- 接口可以继承接口,但不能继承类
- 接口不能有实体
- 一个类可以实现多个接口,实现 用关键字 implements
接口存在的意义
- 将某个功能抽象出来,提高可扩展性
- 是Java成功的关键之一,因为极适合多人写一个大程序
- 也是Java被批评的要点之一,因为容易造成代码膨胀
JAVA入门基础6**(系列更新)———面向对象(二)的继承,抽象,接口相关推荐
- 初识面向对象二(继承/抽象/C3)
面向对象中的三大特性(所有语言通用) 继承 多态 封装 继承的目的:为了解决类与类之间代码重复的问题 类的继承的语法:单继承class A:passclass B(A):passprint(B.__b ...
- **JAVA入门基础2**(系列更新)———JAVA 基础变量
**JAVA入门基础2**(系列更新)---JAVA 基础变量 Java基础 1.注释 2.标识符和关键字 2.1 标识符 2.2 关键字(keyword) 3.数据类型 3.1 基本数据类型 3.2 ...
- SLAM导航机器人零基础实战系列:(二)ROS入门——2.ROS系统整体架构
SLAM导航机器人零基础实战系列:(二)ROS入门--2.ROS系统整体架构 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机 ...
- SLAM导航机器人零基础实战系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览...
SLAM导航机器人零基础实战系列:(二)ROS入门--10.在实际机器人上运行ROS高级功能预览 摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了 ...
- Java入门基础及面试100题--初入门
Java入门基础及面试100题 注:适合应届毕业生或java初入门者 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程, ...
- Java入门基础(十四)Maven仓库的安装
文章目录 一.下载配置Maven环境 1.下载maven.jar解压缩,放在一个文件夹下 2.点击此电脑=>属性=>高级设置=>环境变量=>系统变量=>新建 3.变量名为 ...
- java入门基础重要知识必考考点
java入门基础重要知识 一. Java概述 二. Java语言基础 1. 标识符的命名规则: 2. 关键字 3. 基本数据类型(基本.引用) 4. 基本数据类型转换 5. 定义变量的语法: 6. 运 ...
- java入门基础(四)
文章目录 (一)对象和类 封装概述: (二)String对象 (三)StringBuilder对象 (四)集合ArrayList:可变的存储模型 练习 ArryayList练习 (一)对象和类 类:类 ...
- java入门基础学习(三)
文章目录 (一)有返回值的方法 (二)方法重载 习题 (一)有返回值的方法 格式:public static 返回值数据类型 方法名(参数){方法体return 数据;} 注意:1.返回值数据类型非v ...
最新文章
- Apache Tomcat 7.x 概述
- 前Citrix CTO认为虚拟化将解决现有的安全问题
- 2021年春季学期-信号与系统-第十五次作业参考答案-第十小题参考答案
- php判断访客语言,php实现获取及设置用户访问页面语言类
- 无BOM禁止转生产订单
- jvm解决堆内存溢出问题
- ecplice java run_java – EventDispatchThread.run()行:eclipse中不...
- [html] 你有用过图片热区吗?它有什么运用场景?
- python技巧(2)--碾平列表和列表去重
- conda安装tensorflow-gpu简洁版_win10 tensorflow2.2 安装注意事项
- MySQL进阶操作之视图
- 通过qemu调试centos7内核
- 深入理解乐观锁与悲观锁(实战)
- PSD分层电商促销模板|季末大促上演
- python----设置默认编码
- Linux之ssh-agent命令
- C# WebBrowser控件使用整理
- TigerGraph集群安装
- 车型代号对照表_车型代号对照表 2016最新版
- STC宏晶单片机初始开发教程