Java面向对象
来源:互联网 发布:python dict索引 编辑:程序博客网 时间:2024/05/29 15:01
谈一谈你对堆栈的理解
栈:临时存储空间
堆:存放对象
示例说明你对面向对象三大特性的理解
面向对象
面向:根据,基于
对象:真实存在的实体
类和对象
类:模子(一类东西的集合)
对象:根据模子做的实体(集合里的具体一个)
封装性
定义:封装一类对象的属性和方法
属性:有什么东西(例如生命本质)
方法:能做什么事情(例如生活行动)
继承性
定义:父类的属性和方法子类也有
实例
我们模拟一集柯南
- 案件发生了
- 有人看到了现场
- 柯南找到了真相
用面向对象思想
- 有什么东西(属性)
- 能做什么(方法)
分析
- 坏人:有名字,能做坏事,有目击能力
- 目击者:有名字,有目击能力
- 侦探:有名字,能破案,有目击能力
/** * 基类 * * @author Administrator * */public abstract class People { private String name; public People(String name) { this.name = name; System.out.println("我是 --> " + this.getName()); } public String getName() { return name; } public void setName(String name) { this.name = name; } /** * 目击现场 */ public void withnessScene() { System.out.println(this.getName() + " --> 发现了现场"); }}
/** * 坏人 * @author Administrator * */public class BadPeople extends People { public BadPeople(String name) { super(name); } public void doBadThing() { System.out.println(this.getName() + " --> 做了坏事,案件发生了"); }}
/** * 侦探 * * @author Administrator * */public class DetectivePeople extends People { public DetectivePeople(String name) { super(name); } /** * 找到了真相 */ public void findTrue() { System.out.println(this.getName() + " --> 找到了真相"); }}
/** * 目击者 * * @author Administrator * */public class WithnessPeople extends People { public WithnessPeople(String name) { super(name); }}
public class Main { public static void main(String[] args) { BadPeople p = new BadPeople("小李(坏人)"); WithnessPeople w = new WithnessPeople("小王(目击者)"); DetectivePeople d = new DetectivePeople("柯南(侦探)"); p.doBadThing(); w.withnessScene(); d.findTrue(); }}
运行结果
我是 –> 小李(坏人)
我是 –> 小王(目击者)
我是 –> 柯南(侦探)
小李(坏人) –> 做了坏事,案件发生了
小王(目击者) –> 发现了现场
柯南(侦探) –> 找到了真相
多态性
- 重写:重写父类的方法
- 重载:方法名相同,但是传入参数种类不同
例子
生物,人,老鼠
分析
有什么:类型,性别
做什么:吃
/** * 生物 * @author Administrator * */public class Biology { private String type; private String sex; public Biology(String type){ this.type = type; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } /** * 吃 */ public void eat(){ System.out.println("生物 --> 吃东西"); }}
/** * 人 * * @author Administrator * */public class People extends Biology { public People(String type) { super(type); } /** * 吃 */ @Override public void eat() { System.out.println(this.getType() + " --> 吃东西"); }}
/** * 老鼠 * * @author Administrator * */public class Mouse extends Biology { public Mouse(String type) { super(type); } /** * 吃 */ @Override public void eat() { System.out.println(this.getType() + " --> 吃东西"); }}
public class Main { public static void main(String[] args) { Biology b = new People("人"); b.eat(); b = new Mouse("老鼠"); b.eat(); }}
执行结果
人 –> 吃东西
老鼠 –> 吃东西
抽象与接口
实例
/** * 吃的接口 * @author Administrator * */public interface Eat { public void eat();}
/** * 生物 * @author Administrator * */public abstract class Biology implements Eat{ private String type; public Biology(){ // 关键技巧 this.type = init(); } public String getType() { return type; } public void setType(String type) { this.type = type; } /** * 实现吃的接口 */ @Override public void eat() { System.out.println("生物 --> 吃东西"); } public abstract String init();}
/** * 老鼠 * * @author Administrator * */public class Mouse extends Biology { public Mouse() { super(); } @Override public String init() { return "老鼠"; } @Override public void eat() { System.out.println(this.getType() + " --> 吃东西"); }}
/** * 人 * * @author Administrator * */public class People extends Biology { public People() { super(); } @Override public String init() { return "人"; } /** * 吃 */ @Override public void eat() { System.out.println(this.getType() + " --> 吃东西"); }}
public class Main { public static void main(String[] args) { Biology b = new People(); b.eat(); b = new Mouse(); b.eat(); }}
执行结果
人 –> 吃东西
老鼠 –> 吃东西
0 0
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- java----Java面向对象
- 【java】java面向对象
- 【Java】Java面向对象
- java面向对象(一) 了解面向对象
- Java面向对象概述
- java面向对象
- JAVA面向对象
- JAVA 面向对象??
- Java面向对象特性
- Java面向对象特性
- java基础 面向对象
- Java面向对象程序设计
- java面向对象
- Android fragment间传递数据以及Dialog
- C#中&结&构&体&与&字&节&流&互&相&转&换
- windows删除node_modules[文件名或扩展名太长,目录层级太深]
- zabbix监控系统fping配置 提示不支持的
- HTTP协议详解
- Java面向对象
- Android 各种布局 控件内部属性大全|我是记不住了搞下来看看
- 条件 CHAIN 语句
- oracle sid 查看
- 走进ReactiveCocoa的大门
- linux 学习总纲:目标与方向
- webview
- beyond compare对比class文件
- 数据结构实验之排序一:一趟快排