扩展一个已有的类,并且继承该类的属性和行为这种方式成为继承。

实例

public class Polygon {
public int sides;
public double area;
public int getNumberOfSides() {
System.out.println(sides);
return sides;
}
/**重写toString*/
@Override
public String toString() {
return "边数为:" + this.sides;
}
/**构造方法*/
public Polygon(int a) {
this.sides = a;
System.out.println("在Polygon的构造器中");
} }
Triangle 继承 Polygon
public class Triangle extends Polygon {
public int base;
public int height;
public double area; /**
* 构造方法
*
* @param base三角形底边
* @param height三角形高
*/
public Triangle(int base, int height) {
super(3);
this.base = base;
this.height = height;
System.out.println("在Triangle类的构造器中");
} @Override
/**
* 重写String完成输出
*/
public String toString() {
return "三角形底:" + this.base + " 三角形高:" + this.height;
} /**
* 三角形面积计算
*
* @return三角形面积
*/
public double getArea() { return (this.base) * (this.height) / 2;
}
}
public class areaTest {

    public static void main(String[] args) {
Polygon a = new Polygon(3);
System.out.println(a.getNumberOfSides());// 添加方法输出
System.out.println(a.toString());// 重写String Triangle b = new Triangle(4, 3);
System.out.println(b.toString());
System.out.println(b.getArea()); } }

上图为简单的继承用法,

注意当继承中,子类对象创建前必须通过super();调用父类的构造方法产生父类对象,一般super();是默认默认调用无参的构造方法,如果父类中没有提供无参构造方法,必须通过

super(实参);进行显示调用。实例中,父类构造方法Polygon中传入参数sides,所以子类Triangle继承了父类后,显示调用了super();

方法的重写

方法的重写发生在父类和子类之间,方法的的参数列表,返回类类型必须相同,调用优先调用子类重写的方法。关键词@Override

实例中重写了toString,实现输出字符串。

注意构造方法会初始化成员变量

封装

public class Television {

    private int channel = 2;
private int volume; /**
* 频道
* @param channel获取频道
*/
public void SetChannel(int channel) {
if (channel > 1000 || channel < 1) {
return;
} else {
this.channel = channel;
}
} /** 频道访问器 */
public int GetChannel() {
return this.channel;
} /**
* 音量
*
* @param volume获取音量
*/
public void SetVolume(int volume) {
if (volume >= 0 && volume <= 10) {
this.volume = volume;
} else {
return;
}
} /** 音量访问器 */
public int GetVolume() {
return this.volume;
} /**
* 构造器
*
* @param channel
* 频道
* @param volume
* 音量
*/
public Television(int channel, int volume) {
this.SetChannel(channel);
this.SetVolume(volume);
}
/**重写*/
@Override
public String toString()
{
return "频道:"+GetChannel()+"\n音量:"+GetVolume();
}
}
public class WatchTelevision {

    public static void main(String[] args) {
String c = JOptionPane.showInputDialog(null, "请输入频道");
String v = JOptionPane.showInputDialog(null, "请输入音量");
int channel = Integer.parseInt(c);
int volume = Integer.parseInt(v);
Television t = new Television(channel, volume);
System.out.println(t);
}
}

实例为封装一个音量和频道在Television的类中,音量和频道作为参数传入Television类中,并且重写toString进行输出。

最新文章

  1. [LeetCode] Third Maximum Number 第三大的数
  2. 谈谈D2
  3. poj 1276 Cash Machine(多重背包)
  4. 王爽-汇编语言-综合研究一-搭建简易C环境
  5. Learning OpenCV
  6. Android 6.0 SDK 找不到HttpClient的解决方法
  7. VBA中自定义类和事件的(伪)注册
  8. 获取app版本号
  9. WP开发笔记——WP7 SDK使用技巧
  10. bzoj1221: [HNOI2001] 软件开发
  11. 操作邮箱的类和文件的Md5【粘】
  12. Installutil.exe 注册exe
  13. realypay
  14. Robot Operating System (ROS)学习笔记4---语音控制
  15. python2 python3 字符串 编码格式 处理
  16. QQ去除聊天框广告详解——2016.9 版
  17. ios 获得指定url的cookie
  18. RESTful Web 服务:教程
  19. bzoj 2406 二分+有源有汇上下界网络流可行流判定
  20. Linux ad7606 驱动

热门文章

  1. TensorFlow的序列模型代码解释(RNN、LSTM)---笔记(16)
  2. iterm2 快捷键设置
  3. php第八节课
  4. HDU1069 - Monkey and Banana【dp】
  5. Windows Server 2008 R2x64 IIS7+PHP5.6 错误 500.0
  6. cxGrid主从表删除从表记录的困惑
  7. redis-linux上安装redis
  8. JAVA实现多线程的两种方法
  9. Eclipse没有Run On Server的问题解决
  10. ZOJ 3494