zoukankan      html  css  js  c++  java
  • 2018.1.13面向对象之继承复习

    class Rect{
    	int width=2, height=6;
    	void setWidth(int width){
    		this.width=width;
    		//代码1 将参数的值赋给成员变量width
    	}
    	void setHeight(int height){
    		this.height=height;
    		//代码2 将参数的值赋给成员变量height
    	}
    	int getArea(){
    		return width*height;
    	}
    }
    public class E{
    	public static void main(String[] args) {
    		Rect rect=new Rect();
    		rect.setWidth(5);
    		rect.setHeight(6);
    		System.out.println(rect.getArea());
    	}
    }
    

      

      

    运行结果为30

                                                           //如果去掉this,则结果为12;  ??这是疑惑??

     

     

     

     

    javaBean

    javaBean:可以重复使用的软件组件。javaBean是一个java类,通过封装方法和属性,成为了具有某种功能或处理某种业务的对象,简称Bean。

    特点:有点像设计模式的概念,可以重复利用,易维护,跨平台。

    说明:为了让用这个Bean的应用程序构建工具知道Bean的属性和方法,只需在类的方法上遵守如下规则就行。

    1.为这个类提供一个无参的共有的构造方法。

    2.把所有的属性定义为私有的。

    3.为每个属性提供共有getter(获得属性值)和setter(修改值)的方法。

    /*定义一个javaBean*/
    public class JavaBeanTest{
        private String name;
        private String age;
        public JavaBeanTest(){
            //不带参数的构造方法
        }
        //每个属性公有的setter和setter方法
        public String getName(){
            return name;
        }
        public void setName(String name){
            this.name=name;
        }
        public int getAge(){
            return age;
        }
        public void setAge(int age){
            this.age=age;
        }
    }

    是先设置set方法还是get方法?有区别?有讲究没有?这是没有讲究的

    为什么set方法中有参数和数据类型?而get方法无参数?

     

    类的继承:在现有类的基础上构建子类,可以延伸,还可以覆盖,还可

                   以向上或向下转型。

    class Employee{
        private String name;
        private int age;
        private double salary=3000;//Employee类的成员属性的设置
    
        public Employee(String name, int age, double salary){
            this.name=name;
            this.age=age;
            this.salary=salary;//构造器的参数设置,方便于参数的传递,把形参的值传给成员变量
        }
        public Employee(){
    
        }//为什么要空的构造器?这个代码应该可以省略
    
        public double getSalary(){
            return salary;
        }
        public double getMothlyIncome(){
            return salary;//获得值
        }    
    
    }
    
    class Manager extends Employee{
        private double bonus=1500;
        public Manager(){
    
        }
        //设置子类特有的方法
        public void setBonus(double bouns){
            this.bonus=bonus;//设置奖金
        }
        public double getBonus(){
            return bonus;//获取并返回奖金
        }
    }
    
    public class InheritanceTest{
        public static void main(String[] args) {
            Manager manager=new Manager();
            double sal=manager.getSalary();
            System.out.println("经理的月薪为"+sal);
            System.out.println("经理的奖金为"+manager.getBonus());
        }
    }

    /*说明:

    1.子类只能获取父类非私有的

    2.子类不拥有父类的构造器

    3.父类不拥有子类所特有的属性和方法

    */

     

    继承的优点:

    1.可以创建更多的特殊类型   2.提高代码的重用性     3.易于后期维护

     

    使用继承的规则:

    1.满足is-a关系,而组合满足has-a(   找个例子!!)

    2.把通用的属性和操作发到超类中

    3.除非使用的方法有意义,否则不使用继承。

     

    组合是指在新的类中创建原有类的对象,重复利用已有类的功能

    比如汽车是交通工具的一种,则是继承。一个汽车有多个轮胎,则是组合。

    class Verhicle{
    }
    class Car extends Verhicle{
    }
    //继承
    
    class Tire{
    }
    class Car extends Verhicle{
    private Tire t=new Tire;
    }
    //组合

    在java中组合用的比继承多(接口和组合的方式比用继承有更好的可扩展性)

     

    super关键字

    作用:通过子类调用父类的构造方法,就用到super关键字,特别是父类私有的,还有被覆盖的情况下(明天找个例子)。

    语法格式:super(参数值列表)

    public Manager extends Employee{

    private double blnus=1500;

    public Manager(String name,int age,double salary,double bouns){

    super(name,age,salary);

    this.bonus=bonus;

    }

    public void setBounds(double blnus){

    this.bouns=bouns;

    }

    public void getBounds(){

    return bonus;

    }

    }

    }

     

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    String类
    数学类
    同一场景下多个图层之间的调用
    茶壶在触摸机制下旋转的三种方式
    犀牛3D模型下载
    纹理--高清设计素材下载
    cocos2d-x-2.x与3.x帧动画实现方式的改变
    toast提示框的实现
    MenuItem创建注意事项
    Cocos2d-x 面试题解 整理01
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/8280674.html
Copyright © 2011-2022 走看看