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

实例

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. inheritprototype原型继承封装及综合继承最简实例

    1.inheritprototype.js ;(function(){    var s = {        inheritObject:function(o){//对象继承封装           ...

  2. python继承——封装

    python继承--封装 1 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度 2 封装分为两个层面 第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空 ...

  3. OOP面向对象 三大特征 继承封装多态

    OOP面向对象 ----三大特征 继承封装多态 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构 ...

  4. JavaScript基础--面向对象三大特性(八):继承封装多态

    一.构造函数基本用法:function 类名(参数列表){ 属性=参数值} function Person(name,age){ this.name = name; this.age = age; } ...

  5. JavaScript 继承 封装 多态实现及原理详解

    面向对象的三大特性 封装 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性. ...

  6. Python面向对象初始(三大特征,多态,继承,封装)

    Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...

  7. [Objective-C] 004_继承封装与多态

    继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展.通过继承创建的 ...

  8. 【基础】Equal方法、面向对象-多态-继承-封装

    package Test; public class L3_1 { public static void main(String[] args) { C c1=new C(100); C c2=new ...

  9. JS继承封装

    <script> var extend = function (subClass, superClass) { //1.继承类的中间类 var Tmp = function() {}; / ...

随机推荐

  1. PAT_A1154#Vertex Coloring

    Source: PAT A 1154 Vertex Coloring (25 分) Description: A proper vertex coloring is a labeling of the ...

  2. Ubuntu安装RTX2080显卡驱动

    安装RTX2080显卡驱动 近日新购了一台DELL服务器,用于TensorFlow,由于显卡是另加的,需要安装显卡驱动. 服务器配置 服务器型号:DELL PowerEdge R730 CPU:2*I ...

  3. Mark Zuckberg: A letter to our daughter

    转自:   http://www.fastcompany.com/3054120/fast-feed/read-mark-zuckerbergs-letter-to-his-newborn-daugh ...

  4. html表单练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 企业版 Linux 附加软件包(EPEL)

    企业版 Linux 附加软件包(以下简称 EPEL)是一个由特别兴趣小组创建.维护并管理的,针对 红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS.Scientific Linux ...

  6. 继续聊WPF——自定义CheckBox控件外观

    上一篇文章中谈到了BulletDecorator控件,就是为自定义CheckBox控件的模板做准备,因为CheckBox需要比较严格的布局,正好,BulletDecorator控件就合适了,该控件的布 ...

  7. 【2】Django安装

    **万物负阴而抱阳,冲气以为和 ** ——老子<道德经> 我们静下心态,开始我们的Django之旅 本节内容 Django的安装 安装结果验证 了解官方文档 1. 安装Django 我们强 ...

  8. nutz中实现登录验证

    一.nutz是什么 nutz是一个轻便的web端开发框架.主页如下:http://www.nutzam.com/core/nutz_preface.html 二.session简单介绍 大家都知道ht ...

  9. mongodb--win10安装

    安装完成后再将安装后的bin目录加入PATH路径

  10. A - 敌兵布阵(HDU 1166)

    A - 敌兵布阵 HDU - 1166 思路:线段树单点修改+区间查询. #include<cstdio> #include<cstring> #include<iost ...