zoukankan      html  css  js  c++  java
  • 继承&封装

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

    实例

    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()+"
    音量:"+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进行输出。

  • 相关阅读:
    java如何手动创建一个线程池
    HashMap的面试总结(摘抄)
    JDK源码调试
    分布式和集群的区别
    开发中model,entity和pojo的区别
    java并发编程_CountDownLanch(倒计数锁存器)应用场景
    Map 怎么排序
    java中Thread的 interrupt异常处理
    zookeeper节点失效重连机制
    java并发库_并发库知识点整理
  • 原文地址:https://www.cnblogs.com/zxiaoyuer/p/6790308.html
Copyright © 2011-2022 走看看