精华内容
下载资源
问答
  • 继承与非继承总结以及案例分析

    千次阅读 2017-07-18 19:09:56
    不可以继承的:  display、margin、border、padding、background、height、min-height、max-width、min-width、position、left、right、bottom、top、float、table-layout等等。  不能继承:也就是说子节点不能...

    不可以继承的:

       display、margin、border、padding、background、height、min-height、max-width、min-width、position、left、right、bottom、top、float、table-layout等等。

       不能继承:也就是说子节点不能继承父节点的属性,譬如:

    <div style="border:1px solid #ff0000;">这是父节点<p>这是子节点</p></div>

    呈现效果如下:

    如果子节点能继承父节点的border属性,那么也会有一个红色边框。

    所有元素可继承:visibility和cursor。

    内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction。

    块状元素可继承:text-indent和text-align。

    列表元素可继承:list-style、list-style-type、list-style-position、list-style-image。

    表格元素可继承:border-collapse。

    相反,可继承就是父节点设置了这个属性后,子节点就可以继承他的属性,
    这里要明白什么是块状元素,内联元素。
    块状元素,是其属性display的默认值为block的标签,也就是div,p,h1等等,但不代表这些标签一定是块状元素,当程序员把他的display属性改变,就不是块状元素,例如:
    html

    <div style="border:1px solid #ff0000; width:400px; padding:10px;">这是块状元素</div>
    <div style="border:1px solid #ff0000; width:400px; padding:10px;">这也是块状元素</div>



    但如果,把其中一个div的display设置成inline,就变成:
    内联元素,width,和height属性都不起效的。
    再看看例子:
    html

    <span style="border:1px solid #ff0000; width:400px; padding:10px;">我是内联元素</span>
    <span style="border:1px solid #ff0000; width:400px; padding:10px;">我也是内联元素</span>

    我们把其中一个display设置成block时就会有:
    很明显的是,一个标签没有说是一定是块状元素,当他的display属性被设置了,就会改变他。
    有一点要注意的是当原本是内联元素的被设置float,也会变成呢个块元素的,把上面的“我是内联元素,设置为float:left,效果如:
    html:style="text-indent:2em;border:1px solid#ff0000; width:400px;">

    这是一级块状元素
    <div style="border:1px solid#060">这是二级块状元素,

    <p style="border:1px solid#0000ff">这是三级块状元素

    <span style="background-color:#333;color:#ffffff;">这是内联元素
    </span>
    </p>
    </div>
    </div>

    text-indent:文本缩进,这是一个比较少用的属性,它是一段文本的第一行缩进多少个像素,或字符。很明显它是一个文本编辑的属性,但有些人会把它当成间距属性使用,这样子做其实是很怪诞的:
    第一,你不可保证,那段文字,永远都只有一行。
    第二,定义为text-indent的子节点是块状元素,会继承这个属性的,但而其他人接受你写的css后,多数的时候都不会预计到子节点继承text-indent属性,而去修改。
    为了避免这种不可预计的继承,你可以用padding,来代替text-indent,而不是,你发现这个属性!

     



























    展开全文
  • 本文实例讲述了Python面向对象之继承原理与用法。分享给大家供大家参考,具体如下: 目标 单继承继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用,相同的...
  • Java关于继承的经典案例 点赞!点赞!点赞! 题干:结合继承的思想,分析下列需求并实现 1.定义项目经理类Manager 【属性:姓名 工号 工资 奖金】【行为:工作work】 2.定义程序员类Coder【属性:姓名 工号 工资】...

    Java关于继承的经典案例

    点赞!点赞!点赞!

    题干:结合继承的思想,分析下列需求并实现
    1.定义项目经理类Manager 【属性:姓名 工号 工资 奖金】【行为:工作work】
    2.定义程序员类Coder【属性:姓名 工号 工资】【行为:工作work】
    3.要求:通过有参构造创建两个类的对象,并调用各自的work方法

    首先:创建关于Manger和Coder的抽象类 Employee(共性提取)

    public abstract class Employee {
    	
    	
    	private String name;
    	private String id;
    	private double  money;
    	
    	
    	public Employee(String name, String id,double  money) {
    		this.name = name;
    		this.id = id;
    		this.money = money;
    	}
    	
    	
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getId() {
    		return id;
    	}
    	public void setId(String id) {
    		this.id = id;
    	}
    	public double getMoney() {
    		return money;
    	}
    	public void setMoney(double money) {
    		this.money = money;
    	}
    	
    	public abstract void work();
    	
    	
    }
    

    然后创建类Coder,并提供构造方法

    public class Coder extends Employee{
    	
    	public Coder(String name, String id, double money) {
    		super(name,id,money);
    	}
    
    	//姓名为:张三,工号为:9527,工资为:10000.0,的程序员正在编写代码
    	@Override
    	public void work() {
    		// TODO Auto-generated method stub
    		System.out.println("姓名为:" + super.getName()+ ",工号为:" + super.getId() +",工资为:"+ super.getMoney() +",的程序员正在编写代码");
    		
    	}
    }
    
    

    然后创建Manger类,添加独有的成员变量,并提供构造方法

    public class Manger extends Employee{
    	
    	private double jangJiN;
    	
    	public Manger(String name, String id, double money, double jangJin) {
    		super(name, id, money);
    		this.jangJiN = jangJin;
    	}
    	
    	
    	public double getJangJiN() {
    		return jangJiN;
    	}
    
    
    	public void setJangJiN(double jangJiN) {
    		this.jangJiN = jangJiN;
    	}
    
    
    	//姓名为:李四,工号为:9528,工资为:15000.0,奖金为:2000.0,的项目经理正在管理程序员写代码
    	@Override
    	public void work() {
    		// TODO Auto-generated method stub
    		System.out.println("姓名为:" + super.getName()+ ",工号为:" + super.getId() +",工资为:"+ super.getMoney()+"奖金为:"+this.getJangJiN() +"的项目经理正在管理程序员写代码");
    	}
    
    }
    

    编写测试类Test

    public class Test {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		//姓名为:李四,工号为:9528,工资为:15000.0,奖金为:2000.0,的项目经理正在管理程序员写代码
    		Manger manger = new Manger("李四", "9528", 15000.0, 2000.0);
    		manger.work();
    		
    //		//姓名为:张三,工号为:9527,工资为:10000.0,的程序员正在编写代码
    		Coder coder = new Coder("张三", "9527", 1000.0);
    		coder.work();
    	}
    }
    

    随手来个赞,谢谢!
    关注感谢你一辈子!

    展开全文
  • 主要介绍了Python中的单继承与多继承,结合实例详细分析了Python面向对象程序设计中单继承与多继承的概念、原理、实现方法及相关操作注意事项,需要的朋友可以参考下
  • Java继承的综合案例

    千次阅读 2021-04-23 19:25:20
    文章目录继承的综合案例1.1 综合案例:群主发普通红包1.2 案例分析1.3 案例实现定义用户类:定义群主类:定义成员类:定义测试类: 继承的综合案例 1.1 综合案例:群主发普通红包 群主发普通红包。某群有多名成员,...

    继承的综合案例

    在这里插入图片描述

    项目链接

    https://download.csdn.net/download/weixin_45525272/17416073

    1.1 综合案例:群主发普通红包

    群主发普通红包。某群有多名成员,群主给成员发普通红包。普通红包的规则:

    1. 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
    2. 成员领取红包后,保存到成员余额中。
      请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。

    1.2 案例分析

    根据描述分析,得出如下继承体系:

    1.3 案例实现

    定义用户类:

    public class User {
        // 成员变量
        private String username;
        private double leftMoney;
        // 用户名
        // 余额
        // 构造方法
        public User() { }
        public User(String username, double leftMoney) {
            this.username = username;
            this.leftMoney = leftMoney;
        }
        // get/set方法
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public double getLeftMoney() {
            return leftMoney;
        }
        public void setLeftMoney(double leftMoney) {
            this.leftMoney = leftMoney;
        }
        // 展示信息的方法
        public void show() {
            System.out.println("用户名:"+ username +" , 余额为:" + leftMoney + "元");
        }
    }
    

    定义群主类:

    public class QunZhu extends User {
        // 添加构造方法
        public QunZhu() {
        }
        public QunZhu(String username, double leftMoney) {
            // 通过super 调用父类构造方法
            super(username, leftMoney);
        }
        /*
        群主发红包,就是把一个整数的金额,分层若干等份。
        1.获取群主余额,是否够发红包.
        不能则返回null,并提示.
        能则继续.
        2.修改群主余额.
        3.拆分红包.
        3.1.如果能整除,那么就平均分。
        3.2.如果不能整除,那么就把余数分给最后一份。
        */
        public ArrayList<Double> send(int money, int count) {
            // 获取群主余额
            double leftMoney = getLeftMoney();
            if(money > leftMoney) {
                    return null;
            }
            // 修改群主余额的
            setLeftMoney(leftMoney ‐ money);
            // 创建一个集合,保存等份金额
            ArrayList<Double> list = new ArrayList<>();
            // 扩大100倍,相当于折算成'分'为单位,避免小数运算损失精度的问题
            money = money * 100;
            // 每份的金额
            int m = money / count;
            // 不能整除的余数
            int l = money % count;
            // 无论是否整除,n‐1份,都是每份的等额金额
            for (int i = 0; i < count ‐ 1; i++) {
            // 缩小100倍,折算成 '元'
            list.add(m / 100.0);
            }
            // 判断是否整除
            if (l == 0) {
            // 能整除, 最后一份金额,与之前每份金额一致
            list.add(m / 100.0);
            } else {
            // 不能整除, 最后一份的金额,是之前每份金额+余数金额
            list.add((m + l) / 100.00);
            }
        // 返回集合
        return list;
        }
    }
    
    

    定义成员类:

    public class Member extends User {
        public Member() {
        }
        public Member(String username, double leftMoney) {
            super(username, leftMoney);
        }
        // 打开红包,就是从集合中,随机取出一份,保存到自己的余额中
        public void openHongbao(ArrayList<Double> list) {
            // 创建Random对象
            Random r = new Random();
            // 随机生成一个角标
            int index = r.nextInt(list.size());
            // 移除一个金额
            Double money = list.remove(index);
            // 直接调用父类方法,设置到余额
            setLeftMoney( money );
        }
    }
    

    定义测试类:

    public class Test {
        public static void main(String[] args) {
            // 创建一个群主对象
            QunZhu qz = new QunZhu("群主" , 200);
            // 创建一个键盘录入
            Scanner sc = new Scanner();
            System.out.println("请输入金额:");
            int money = sc.nextInt();
            System.out.println("请输入个数:");
            int count = sc.nextInt();
            // 发送红包
            ArrayList<Double> sendList = s.send(money,count);
            // 判断,如果余额不足
            if(sendList == null){
            System.out.println(" 余额不足...");
            return;
            }
            // 创建三个成员
            Member m = new Member();
            Member m2 = new Member();
            Member m3 = new Member();
            // 打开红包
            m.openHongbao(sendList);
            m2.openHongbao(sendList);
            m3.openHongbao(sendList);
            // 展示信息
            qz.show();
            m.show();
            m2.show();
            m3.show();
        }
    }
    
    展开全文
  • 本文实例讲述了Python面向对象之多态原理与用法。分享给大家供大家参考,具体如下: 目标 多态 ...多态案例演练 需求 1.在 Dog 类中封装方法 game 普通狗只是简单的玩耍 2.定义 XiaoTianDog 继承
  • package demo1; public class Employee { public void method(){ System.out.println("父类方法执行!"); } }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,294
精华内容 19,717
关键字:

关于继承的案例分析