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

实例

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. SVN仓库导入文件

    分两种: 1.导入文件版本库从0开始 (适合新项目) 2.将其他SVN服务器中的版本库导入进来,版本库继承原SVN服务器的(适合SVN版本库迁移) 第一种: #mkdir –p /home/code/ ...

  2. Linux系统学习之 二:新手必须掌握的Linux命令2

    2018-10-03 22:20:48 一.文件目录管理命令 1.touch 命令 用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”. 参数: -a :仅修改“读取时间(at ...

  3. css实现面包屑导航

    HTML代码: <div id="breadcrumb"> <ul class="crumbs"> <li class=" ...

  4. 1、dubbo的概念

    Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo[]是 ...

  5. python数据标准化

    def datastandard(): from sklearn import preprocessing import numpy as np x = np.array([ [ 1., -1., 2 ...

  6. linux命令用来查看日志关键字

    1.查看日志 前 n行: cat 文件名 | head -n 数量 demo: cat  test.log | head -n 200 # 查看test.log前200行 2.查看日志 尾 n行: c ...

  7. c20---指向函数的指针

    // // main.c // 指向函数的指针 #include <stdio.h> void test() { printf("哥被执行了\n"); } int ge ...

  8. 使用getopt命令解析shell脚本的命令行选项 【转】

    本文转载自:http://yejinxin.github.io/parse-shell-options-with-getopt-command 在之前的一篇文章中,介绍了如何利用shell内置的get ...

  9. ES shrink ——一般是结合rollover一起使用的,一开始没有看懂官方shrink文档,当看了这个之后就明白了

    rollover Elasticsearch 从 5.0 开始,为日志场景的用户提供了一个很不错的接口,叫 rollover.其作用是:当某个别名指向的实际索引过大的时候,自动将别名指向下一个实际索引 ...

  10. 聚类(三)FUZZY C-MEANS 模糊c-均值聚类算法——本质和逻辑回归类似啊

    摘自:http://ramsey16.net/%E8%81%9A%E7%B1%BB%EF%BC%88%E4%B8%89%EF%BC%89fuzzy-c-means/ 经典k-均值聚类算法的每一步迭代中 ...