Java之继承
来源:互联网 发布:淘宝贷款没有了 编辑:程序博客网 时间:2024/06/05 11:08
public class Item {
//这个变量是private类型,只有同一个名字的类可以访问(其子类都不可以在成员函数中访问他)
private String name;
private int playingtime;
private String comments;
private boolean ison;
//private int t;
//通过系统的自动构造函数(在source中)
public Item(String name, int playingtime, String comments, boolean ison) {
super();
this.name = name;
this.playingtime = playingtime;
this.comments = comments;
this.ison = ison;
}
public void print(){
System.out.print("name:"+name+";"+"+playingtime:"+playingtime+";"+"comments:"+comments+";"+"ison:"+ison+";");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package database;
//子类和基类是isa的关系 CD类同时也是item类
public class CD extends Item{
private String artist;
public CD(String name,int playingtime,String comments,boolean ison,String artist){
super(name,playingtime,comments,ison);
this.artist=artist;
}
//相当于c++中的虚函数override
public void print(){
super.print();
System.out.print("artist:"+artist+";");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package database;
//通过extends(三单加s)使得DVD成为Item子类
//DVD会得到Item类的所有东西,但是由于访问权限问题并不是所有东西都可以使用 ,比如父类的private对象就只就只有
//父类可以访问,但是如果是protected,那么就是自己可以访问,同一个包内的其他类(相当于friend),子类可以访问
public class DVD extends Item{
//super.表示父类的成员,(比如在子类中有一个和父类同名的成员,由于在子类中会调用离自己近的变量
//所以可以通过super.访问父类的非private变量 )
private String dirtector;//初始化为0
//如果子类中有和父类相同名字的变量,那么父类的该变量会被隐藏(反正就是找对自己最近的变量
//this是表示当前这个对象
//构造时先进行父类的初始化(定义变量,构造函数),在进行自己的初始化(定义变量,构造函数)
public DVD(String name,int playingtime,String comments,boolean ison,String dirtector) {
//可以通过super()函数将参数传给父类让父类构造这一部分
//super等同于参数类型相同的父类构造函数,如果不写super,子类会自动调用不但参数的父类构造函数
super(name,playingtime,comments,ison);
this.dirtector=dirtector;
// TODO Auto-generated constructor stub
}
public void print(){
super.print();
System.out.print("dirtector:"+dirtector+";");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package database;
import java.util.ArrayList;
public class DataBase {
ArrayList<Item> List = new ArrayList<Item>();
public void add(Item x){
List.add(x);
}
public Item getIndexOf(int id){
return List.get(id);
}
// 可以通过for-each访问容器类
public void list(){
for(Item k:List){
//只要Item子类中有print成员函数,那么Database就会认为这个子类是DataBase所要求的Item
k.print();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
DataBase DB = new DataBase();
//直接新建对象,而不是交给对象管理者
DB.add(new CD("00",00,"00",false,"00"));
DB.add(new DVD("11",11,"11",false,"11"));
DB.list();
}
}
- java继承之变量
- java继承之方法
- java学习之继承
- java学习之--继承
- java基础知识之继承
- java学习之继承
- Java基础之继承
- Java学习之继承
- JAVA基础之继承
- Java之继承
- java 之 继承
- Java之继承
- java继承之权限
- java之继承
- Java学习之继承
- JAVA基础之继承
- java基础之继承
- Java学习之继承
- iOS沙盒目录结构解析
- 安卓自定义组合控件
- Java中的构造方法
- 关于JDK兼容问题
- java版谷歌地图计算两经纬度坐标点的距离
- Java之继承
- iframe页面调用父窗口,左右窗口函数的方法
- spring配置datasource三种方式 数据库连接池
- JDBC(三)查询与 ResultSet 结果集
- 如何在Windows下查看JAVA端口占用明细
- Linux常用命令
- 通过SegmentController 切换不同的ViewController
- 2017年,你需要尝试的25个Android第三方库
- h5 canvas 中arcTo()解析