zoukankan      html  css  js  c++  java
  • day_09

    --暑假学习第九天--

    一.super关键字

    super关键字代表了父类空间的引用。
     
    super关键字的作用:
     1. 子父类存在着同名的成员时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员。

     2. 创建子类对象时,默认会先调用父类无参的构造方法,可以通过super关键字指定调用父类的构造方法。
     
    super关键字调用父类构造方法要注意的事项:
     1. 如果在子类的构造方法上没有指定调用父类的构造方法,那么java编译器会在子类的构造方法上面加上super()语句。

     2. super关键字调用父类的构造函数时,该语句必须要是子类构造函数中的第一个语句。

     3. super与this关键字不能同时出现在同一个构造函数中调用其他的构造函数。因为两个语句都需要第一个语句。

    super关键字与this关键字的区别:
     (1). 代表的事物不一致。
       1. super关键字代表的是父类空间的引用。 
       2. this关键字代表的是所属函数的调用者对象。

     (2). 使用前提不一致。
       1. super关键字必须要有继承关系才能使用。
       2. this关键字不需要存在继承关系也可使用。

     (3). 调用构造函数的区别:
       1. super关键字是调用父类的构造函数。
       2. this关键字是调用本类的构造函数。
     
    eg:
    class Fu{
            
        int x = 10;
    
        String name;
    
    
        public Fu(){
            System.out.println("Fu类无参的构造方法..");
        }
    
        public Fu(String name){
            this.name = name;
            System.out.println("Fu类带参的构造方法..");
        }
    
    
        public void eat(){
            System.out.println("小头爸爸吃番薯..");
        }
    }
    
    
    class Zi extends Fu{
        
        int x = 20; 
    
        int num;
        
        public Zi(String name){
            super(name); //指定调用了父类带参的 构造方法...
            this(); // 调用本类无参构造方法..
            //super(); //指定调用了父类无参构造方法。。。
            System.out.println("Zi类带参的构造方法..");
        }
    
        public Zi(){
            System.out.println("Zi类无参的构造方法..");
        }
    
    
        public void print(){
            System.out.println("x = " +super.x);
        }
    
        public void eat(){
            System.out.println("大头儿子吃龙虾..");
        }
    }
    
    class Demo {
    
        public static void main(String[] args) 
        {
            Zi z = new Zi("狗娃");
    
        }
    }
    二.目前的问题:父类的功能无法满足子类的需求。
     
    方法重写的前提: 必须要存在继承的关系。
     
    方法的重写: 子父类出了同名的函数,这个我们就称作为方法的重写。
     
    什么是时候要使用方法的重写:父类的功能无法满足子类的需求时。
     
    方法重写要注意的事项:
     1.方法重写时, 方法名与形参列表必须一致。
     
     2.方法重写时,子类的权限修饰符必须要大于或者等于父类的权限修饰符。

     3.方法重写时,子类的返回值类型必须要小于或者 等于父类的返回值类型。

     4.方法重写时, 子类抛出的异常类型要小于或者等于父类抛出的异常类型。

       Exception(最坏)
       RuntimeException(小坏)
     
    方法的重载:在一个类中 存在两个或者两个 以上的同名函数,称作为方法重载。
     
    方法重载的要求
     1. 函数名要一致。

     2. 形参列表不一致(形参的个数或形参 的类型不一致)

     3. 与返回值类型无关。
     
    eg:
    class Animal{  //大的数据 类型 
    }
    
    class Fish extends Animal{    //Fish小 的数据类型。
    }
    class Fu{
    
    	String name;
    
    	public Fu(String name){
    		this.name = name;
    	}
    
    	public Animal eat() throws RuntimeException {
    		System.out.println(name+"吃番薯...");
    		return new Animal();
    	}
    }
    
    class Zi extends Fu{
    
    	String num;
    	
    	public Zi(String name){
    		super(name);//指定调用 父类带参的构造方法
    	}
    
    	//重写父类的eat方法
    	public Animal eat() throws Exception{
    		System.out.println("吃点开胃菜..");
    		System.out.println("喝点汤....");
    		System.out.println("吃点龙虾....");
    		System.out.println("吃青菜....");
    		System.out.println("喝两杯....");
    		System.out.println("吃点甜品....");	
    		return new Animal();
    	}
    
    }
    
    class Demo2{
    
    	public static void main(String[] args) 
    	{
    		Zi z = new Zi("大头儿子");
    		z.eat();
    	
    	}
    }
    

      

     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    遗传算法(Genetic Algorithm, GA)及MATLAB实现
    CCF CSP 201809-2 买菜
    PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
    PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
    PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
    PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
    PAT (Advanced Level) Practice 1001 A+B Format (20 分)
    BP神经网络(原理及MATLAB实现)
    问题 1676: 算法2-8~2-11:链表的基本操作
    问题 1744: 畅通工程 (并查集)
  • 原文地址:https://www.cnblogs.com/seduce-bug/p/9365570.html
Copyright © 2011-2022 走看看