Java面向对象_继承——基本概念以及管理化妆品实例分析
一、继承的基本概念:
1.继承是面向对象三大特征之一
2.被继承的类成为父类(超类),继承父类的类成为子类(派生类)
3.继承是指一个对象直接使用另一个对象的属性和方法
4.通过继承可以实现代码重用
举个例子:
public class Practice14 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog dog=new Dog("花花");
dog.print();
dog.desc();//直接调用父类的desc方法 }
}
//父类
class Anmial{
protected String name; public Anmial(String name){
System.out.println("animal");
} protected void desc(){
System.out.println(name);
}
}
//子类
class Dog extends Anmial{
/*public Dog(){ System.out.println("无参");
}*/
public Dog(String name){
//显示的调用父类构造方法
super(name);
this.name =name;
System.out.println("dog");
}
public void print(){
System.out.println("我的名字:"+name);
}
}
二、继承的限制
1.java中只能实现单继承,也就是一个类只能有一个父类
2.允许多层继承,即一个子类可以有一个父类,一个父类还可以有其它的父类
3.继承只能继承非私有的属性和方法
4.构造方法不能被继承
子类的实例化过程:子类实例化时会先调用父类的构造方法
如果父类中没有默认的构造方法,在子类的构造方法中必须显示的调用父类的构造方法(super())
三、方法重写(发生在子类和父类之间,子类不想完全继承分类的方法)的特征
1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)
2.子类抛出的异常不能超过父类相应方法的异常(子类异常不能大于父类异常)
3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)
下面举个实例:
实现一个化妆品商城中的化妆品管理
1.定义一个化妆品类(Cosmetic)
2.定义一个化妆品管理类(CosmeticManager)
(1)实现进货功能
(2)可以输出所有化妆品信息功能
3.使用继承实现一个可按单价排序输出所有化妆品的功能
4.使用继承实现一个只输出进口化妆品的功能
import java.util.Arrays; public class Practice14 { public static void main(String[] args) {
// TODO Auto-generated method stub
Cosmetic.print1();
/*CosmeticManager a1=new CosmeticManager();
a1.add(new Cosmetic("韩束",54.88f,"进口"));
a1.add(new Cosmetic("百雀羚",84.60f,"国产"));
a1.add(new Cosmetic("香奈儿",500.0f,"进口"));
a1.add(new Cosmetic("大宝",10.0f,"国产"));
a1.list();*/ /*SortCosmeticManager a1=new SortCosmeticManager();
a1.add(new Cosmetic("韩束",54.88f,"进口"));
a1.add(new Cosmetic("百雀羚",84.60f,"国产"));
a1.add(new Cosmetic("香奈儿",500.0f,"进口"));
a1.add(new Cosmetic("大宝",10.0f,"国产"));
a1.list();*/ ImportCosmeticManager a1=new ImportCosmeticManager();
a1.add(new Cosmetic("韩束",54.88f,"进口"));
a1.add(new Cosmetic("百雀羚",84.60f,"国产"));
a1.add(new Cosmetic("香奈儿",500.0f,"进口"));
a1.add(new Cosmetic("大宝",10.0f,"国产"));
a1.list(); }
}
//实现只输出进口化妆品的类
class ImportCosmeticManager extends CosmeticManager{
public void list(){
for(int i=0;i<super.count;i++){
if("进口".equals(super.cosmetic[i].getType())){ //String类中的方法
super.cosmetic[i].print();
}
}
}
} //可按单价排序输出所有化妆品的类
class SortCosmeticManager extends CosmeticManager{
public void list(){
Cosmetic[] cs=new Cosmetic[super.count];
for(int i=0;i<cs.length;i++){
cs[i]=cosmetic[i];
}
Cosmetic temp=null;
for(int i=0;i<cs.length-1;i++){
for(int j=0;j<cs.length-1-i;j++){
if(cs[j].getPrice()>cs[j+1].getPrice()){
temp=cs[j];
cs[j]=cs[j+1];
cs[j+1]=temp;
}
}
}
for(int i=0;i<cs.length;i++){
cs[i].print();
}
} }
//化妆品管理类
class CosmeticManager{
protected Cosmetic[] cosmetic=new Cosmetic[3];
protected int count=0;
public void add(Cosmetic c){
if(count>=cosmetic.length){
int newLen=cosmetic.length*3/2+1;
cosmetic=Arrays.copyOf(cosmetic, newLen);
}
cosmetic[count]=c;//顺序不能调换
count++;
}
public void list(){
for(int i=0;i<count;i++){
cosmetic[i].print();
} } } //化妆品类
class Cosmetic{
private String name;
private float price;
private String type;
public Cosmetic(){ }
public Cosmetic(String name,float price,String type){
this.name=name;
this.price=price;
this.type=type;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public void print(){
System.out.println(name+"\t"+price+"\t"+type);
}
public static void print1(){
System.out.println("品牌\t价格\t类型");
}
}
Java面向对象_继承——基本概念以及管理化妆品实例分析的更多相关文章
- Java 面向对象_继承
继承 在继承的关系中,子类就是一个父类,也就是说,子类可以被当做父类看待,例如:父类是员工,子类是程序员,那么程序员就是一个员工,代码示例: // 员工类 public class Employee{ ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:宠物商店实例分析
interface Pet{ // 定义宠物接口 public String getName() ; public String getColor() ; public int getAge() ; ...
- Java面向对象之继承(一)
目录 Java面向对象之继承 引言 继承的特点 语法格式 父子类的关系 继承要点 重写父类方法 继承中的构造器 继承中的super关键字 ... Java面向对象之继承 继承是面向对象的第二大特征,是 ...
- objective-C 的内存管理之-实例分析
objective-C 的内存管理之-实例分析 注:这是<Objective-C基础教程>一书上的实例,但是原书限于篇幅,分析得比较简单,初次阅读看得比较费劲,这里展开详细讨论一下. 场景 ...
- 【Java基础】【08面向对象_继承&方法&final】
08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...
- Java 面向对象之继承和重写OverWrite,重写和重载的区别,抽象类
01继承的概述 A:继承的概念 a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 b:在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作 ...
- Java面向对象-面向对象编程之基本概念
面向对象这个概念,每本书上的说法定义很多. 我自己根据我的经验,自己归档总结了下, 所谓面向对象,就是 以基于对象的思维去分析和解决问题,万物皆对象: 面向对象经常和面向过程放一起讨论: 这里举例, ...
- Java面向对象(继承、抽象类)
面向对象 今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成 ...
- Java面向对象的继承
继承也是面向对象的又一重要特性,继承是类于类的一种关系,通俗来说狗属于动物类,那么狗这个类就继承了动物类 java中的继承是单继承的,一个类只能继承与一个父类 子类继承父类之后,子类就拥有了父类的所有 ...
随机推荐
- asp.net分页asp.net无刷新分页高效率分页
项目中经常会用到分页的功能类似的项目做过无数个了,今个把自己常用的分页代码分享一下. 首先说说服务端处理的代码: 下面代码中重点是分页的sql语句的写法,其中的参数@n是当前的页码,总的来说本服务端主 ...
- 使用Azure CLI实现自动关闭Azure虚拟机的脚本
Azure除提供Portal界面.PowerShell进行管理外,还提供Xplate的CLI对其进行管理. 在Azure的管理界面上可以下载各种平台的Xplate CLI的安装程序. 下面是一个小的脚 ...
- VisualGDB系列4:概述-Linux程序与VS
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 本文将会阐述如何使用VisualGDB来 ...
- Sharepoint 对于是否签出文件进行编辑区别
在库设置----版本控制设置 一.需要签出才能编辑 例如需要对以上通用盒进行修改时,若在“使用资源管理器中打开”粘贴文件时会提示必须先签出项目 签出文件后,再粘贴文件到文档库中,可以选择签入的版本类型 ...
- [bzoj1568]李超线段树模板题(标志永久化)
题意:要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段.记第i条被插入的线段的标号为i. 2.给定一个数k,询问与直线 x = k相交的线段中,交点最靠上的线段的编号. 解题关键:注意标 ...
- Jmeter进行简单mysql数据库测试
1.环境准备: mysql: mysql-5.7.17.msi jdbc驱动: 自己百度一下即可 Jmeter: 3.2 2.打开Jmeter,创建测试计划, 点击浏览,添加jdbc驱动 3.添 ...
- 【Redis】Redis事务详解,Redis事务支持回滚(不支持悲观锁)
1.redis事物参考:https://baijiahao.baidu.com/s?id=1613631210471699441&wfr=spider&for=pc (php操作red ...
- 20.Ecshop 2.x/3.x SQL注入/任意代码执行漏洞
Ecshop 2.x/3.x SQL注入/任意代码执行漏洞 影响版本: Ecshop 2.x Ecshop 3.x-3.6.0 漏洞分析: 该漏洞影响ECShop 2.x和3.x版本,是一个典型的“二 ...
- 8.Struts2-057漏洞复现
漏洞信息: 定义XML配置时如果namespace值未设置且上层动作配置(Action Configuration)中未设置或用通配符namespace时可能会导致远程代码执行. url标签未设置va ...
- opengl 和 vs2010的安装配置
1.先安装vs2010, 输个激活秘钥 2.Windows 7下OpenGL如何配置,配置glut: http://jingyan.baidu.com/article/b0b63dbfd1c08 ...