博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据学习2019.03.16
阅读量:5245 次
发布时间:2019-06-14

本文共 5700 字,大约阅读时间需要 19 分钟。

Java EE进阶——面向对象程序设计01

资料库的故事

package dome;public class CD {    private String title;    private String artist;    private int numOfTracks;    private int playingTime;    private boolean gotIt = false;    private String comment;        public CD(String title, String artist, int numOfTracks, int playingTime, String comment) {        //super();        this.title = title;        this.artist = artist;        this.numOfTracks = numOfTracks;        this.playingTime = playingTime;        this.comment = comment;    }        public static void main(String[] args) {        // TODO 自动生成的方法存根    }    public void print() {        System.out.println(title+":"+artist);            }}
View Code
package dome;public class DVD {        private String title;    private String director;    private int playingTime;    private boolean gotIt = false;    private String comment;        public void print() {        System.out.println(title+":"+director);            }    public DVD(String title, String director, int playingTime, String comment) {        super();        this.title = title;        this.director = director;        this.playingTime = playingTime;        this.comment = comment;    }        public static void main(String[] args) {        // TODO 自动生成的方法存根    }}
View Code
package dome;import java.util.ArrayList;public class DataBase {    private ArrayList
listCD = new ArrayList
(); private ArrayList
listDVD = new ArrayList
(); public void add(CD cd) { listCD.add(cd); } public void add(DVD dvd) { listDVD.add(dvd); } public void list() { for(CD cd:listCD) { cd.print(); } for(DVD dvd:listDVD) { dvd.print(); } } public static void main(String[] args) { DataBase db = new DataBase(); db.add(new CD("abc","abc",4,60,"............")); db.add(new CD("def","def",4,60,"............")); db.add(new DVD("hijk","hijk",30,"...........")); db.add(new DVD("lmno","lmno",30,"...........")); db.list(); }}
View Code

继承

子类父类关系

protected关键字 

package dome;public class Item {    protected String title;    protected int playingTime;    protected boolean gotIt = false;    protected String comment;//    public Item(String title, int playingTime,  String comment) {//        super();//        this.title = title;//        this.playingTime = playingTime;//        this.comment = comment;//    }    public static void main(String[] args) {        // TODO 自动生成的方法存根    }    public void print() {        // TODO 自动生成的方法存根            }}
View Code

 

package dome;public class CD extends Item{    //private String title;    private String artist;    private int numOfTracks;    //private int playingTime;    //private boolean gotIt = false;    //private String comment;        public CD(String title, String artist, int numOfTracks, int playingTime, String comment) {        //super();        this.title = title;        this.artist = artist;        this.numOfTracks = numOfTracks;        this.playingTime = playingTime;        this.comment = comment;    }        public static void main(String[] args) {        // TODO 自动生成的方法存根    }    public void print() {        System.out.println(title+":"+artist);            }}
View Code
package dome;public class DVD extends Item{        //private String title;    private String director;    //private int playingTime;    //private boolean gotIt = false;    //private String comment;        public void print() {        System.out.println(title+":"+director);            }    public DVD(String title, String director, int playingTime, String comment) {        super();        this.title = title;        this.director = director;        this.playingTime = playingTime;        this.comment = comment;    }        public static void main(String[] args) {        // TODO 自动生成的方法存根    }}
View Code
package dome;import java.util.ArrayList;public class DataBase {    //private ArrayList
listCD = new ArrayList
(); //private ArrayList
listDVD = new ArrayList
(); private ArrayList
listItem = new ArrayList
();// public void add(CD cd) {// listCD.add(cd);// }// public void add(DVD dvd) {// listDVD.add(dvd);// } public void add(Item item) { listItem.add(item); }// public void list() {// for(CD cd:listCD) {// cd.print();// }// for(DVD dvd:listDVD) {// dvd.print();// }// } public void list() { for(Item item:listItem) { item.print(); } } public static void main(String[] args) { DataBase db = new DataBase(); db.add(new CD("abc","abc",4,60,"............")); db.add(new CD("def","def",4,60,"............")); db.add(new DVD("hijk","hijk",30,"...........")); db.add(new DVD("lmno","lmno",30,"...........")); db.list(); }}
View Code

多态变量

  • Java的对象变量是多态的,它们能保存不止一种类型;
  • 它们可以保存的是声明类型的对象,或声明类型的子类的对象;
  • 当把子类的对象赋给父类的变量的时候,就发生了向上造型。

子类和子类型

  • 类定义了类型
  • 子类定义了子类型
  • 子类的对象可以被当做父类的对象来使用
  • 赋值给父类的变量
  • 传递给需要父类对象的函数
  • 放进存放父类对象的容器里

向上造型

  • 子类的对象可以赋值给父类的变量。
  • 注意!Java中不存在对象对对象的赋值。
  • 父类对象不能赋值给子类的变量!
  • 拿一个子类的对象,当做父类的对象来用;
  • 向上造型是默认的,不需要运算符
  • 向上造型总是安全的

Vechicle v;

Car c = new Car();

v = c;  //可以

c = v;  //编译错误

可以用造型:

c = (Car)v;

(只有当v这个变量实际管理的是Car才行)

造型

  • 用括号围起类型放在值的前面
  • 对象本身并没有发生任何变化
  • 所以不是“类型转换”
  • 运行时有机制来检查这样的转化是否合理(不合理,会抛出ClassCastException异常)。

多态

函数调用的绑定

  • 当通过对象变量调用函数的时候,调用哪个函数这件事情叫做绑定;
  • 静态绑定:根据变量的声明类型来决定;
  • 动态绑定:根据变量的动态类型来决定;
  • 在成员函数中调用其他成员函数也是通过this这个对象变量来调用的。

覆盖(override)

  • 子类和父类中存在名称相同和参数列表完全相同的函数,这一对函数构成覆盖关系;
  • 通过父类的变量调用存在覆盖关系的函数时,会调用变量当时管理的对象所属的类的函数。

Object类

所有的类都是继承自Object的。

Object类的函数

  • toString()
  • equals()

 

 

转载于:https://www.cnblogs.com/homelessdog/p/10544523.html

你可能感兴趣的文章
学习Spring Boot:(二十八)Spring Security 权限认证
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
STEP2——《数据分析:企业的贤内助》重点摘要笔记(六)——数据描述
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
CF E2 - Array and Segments (Hard version) (线段树)
查看>>
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
查看>>
SIGPIPE并产生一个信号处理
查看>>
CentOS
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>
YUV 格式的视频呈现
查看>>
Android弹出框的学习
查看>>
现代程序设计 作业1
查看>>
在android开发中添加外挂字体
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
Learning-Python【26】:反射及内置方法
查看>>