大数据<javaSE + Linux精英实训班>_day_13

---恢复内容开始---

1:面向对象->内部类
    
    什么是内部类?
        将类写在其它类的内部,可以写在其它类的成员位置和局部位置,把写在其它类内部的类
        就称为内部类。其它类,我们称为外部类。
        
        
    什么时候使用内部类?
        在描述事物。如果一个事物的内部包含其它包含的事物。
        
        class 汽车{ // 外部类
            class 发动机{    // 内部类
                
            }
        }

 

package com.itstra.demo01;
/*
 *     内部类的定义:
 *         将内部类定义在外部类的成员位置
 * 
 */
public class Outer {
    
    private int a = 1;
    
    /*
     *  调用规则:内部类,可以使用外部类成员,包括私有
     *               外部类要使用内部类成员,必须建立内部类对象
     */
    class Inner{
        public void Inner() {
            // 内部类可以直接使用外部类的私有成员变量 同级别的关系
            System.out.println("内部类的方法Inner" + a);
        }
    }
}
package com.itstra.demo01;

public class Test {
    public static void main(String[] args) {
        /*
         * 调用外部类中的内部类的方法Inner方法
         * 依靠外部类的对象,来找到内部类,通过内部类的对象,调用内部类的方法
         * 格式:
         *         外部类名.内部类名   变量  = new  外部类对象().new 内部类对象();
         *         变量名.内部类方法()
         */
        
        Outer.Inner in = new Outer().new Inner();
        in.Inner();
    }
}

 

局部内部类:
2:面向对象->成员内部类的同名变量调用
package com.itstra.demo02;

public class Outer {
    int a = 1;
    
    class Inner{
        int a = 2;
        public void inner() {
            int a = 3;
            // 就近原则
            //System.out.println(a); // 3
            //System.out.println(this.a); // 2
            System.out.println(Outer.this.a); // 1
        }
    }
}
package com.itstra.demo02;

public class Test {
    public static void main(String[] args) {
        Outer.Inner in = new Outer().new Inner();
        in.inner();
    }
}

 

3:面向对象->局部内部类
package com.itstra.demo03;

public class Outer {
    // 局部内部类的定义
    public void out() {
        class inner{  
            public void inner() {
                System.out.println("局部内部类方法");
            }
        }
    }
    
    public void out_1() {
        // 类不重名  属于不同方法中
        class inner{
            
        }
    }
}
package com.itstra.demo03;

public class Test {
    public static void main(String[] args) {
        // 什么都没有  原因调用不到局部内部类的方法
        new Outer().out();
    }
}

 

匿名内部类
4:面向对象->匿名内部类
package com.itstra.demo04;

public interface Smoking {
    public abstract void smoking();
    /*
     * 实现类,实现接口,重写接口的抽象方法,创建实现对象
     * class XXX implements Smoking{
     *                 public void smoking(){
     *                     
     *             }
     *      }
     *  
     *  XXX x = new XXX();
     *  x.smoking;
     *  
     *  Smoking s = new XXX();
     *  s.smoking;
     *  
     *  以上的形式太复杂,写的东西太多
     *  匿名内部类,简化问题:定义实现类,重写方法,建立实现类对象
     */
}
package com.itstra.demo04;

public class Test {
    /*
     * 使用匿名内部类
     * 
     * 定义实现类,重写抽象类方法,创建实现对象,一步搞定
     * 格式:
     *         new 接口或者父类(){
     *             重写抽象方法
     *         };
     * 
     * 在;位置.方法名
     * 
     * 等价于:
     *     XXX x = new  XXX();
     *     x.smoking();
     * 
     * 注意:前提必须实现了接口就看继承
     */
    
    public static void main(String[] args) {
        // 匿名内部类的使用
        new Smoking() {
            public void smoking() {
                System.out.println("人在吸烟");
            }
        }.smoking();
    }
    
}
匿名内部类的使用:
package com.itstra.demo05;

public abstract class Animal {
    public abstract void eat();
    public abstract void sleep();
}
package com.itstra.demo05;

public class Test {
/*
 * 方式一:
 */
    public static void main1(String[] args) {
        // 匿名内部类创建对象
        new Animal() {
            public void eat() {
                System.out.println("动物在吃");
            }
            
            public void sleep() {
                System.out.println("猪在睡觉");
            }
        }.eat(); // 打印动物在吃
    }
    
    /*
     * 方式二:
     */
    public static void main(String[] args) {
        // 匿名内部类创建对象
        Animal a = new Animal() {
            public void eat() {
                System.out.println("动物在吃");
            }
            
            public void sleep() {
                System.out.println("猪在睡觉");
            }
        };
        a.eat();
        a.sleep();
    }
}

 

5:面向对象->包
  
  java的包,其实就是电脑系统的文件夹,包里存放的是程序生成的类文件。对类分类管理。
  
  声明格式:
   通常使用公司网址的反写,可以有多层包,包名采用全部小写(这是包名的格式和规范),多层包之间"."连接
   导包要引入包最后的文件夹位置都要引用*,全部导入
   
  导包不用我们参与

 

 

 

        
6:面向对象->代码块
    
    格式:{}
        atatic{} 静态代码块
package com.itstra.demo06;

public class Person {
    private String name;
    private int age;
    
    public Person(String name,int age) {
        this.age = age;
        this.name = name;
        System.out.println("我是有参构造方法");
    }
    
    // 构造代码块
    {
        System.out.println("我是构造代码块");
    }
    // 静态代码块
    static {
        System.out.println("我是静态代码块");
    }
}
package com.itstra.demo06;
/*
 *     静态代码块,执行一次
 *     构造代码块,new一次就执行一次,优先于构造方法
 *     构造方法,new一次就执行一次
 */
public class Test {
    public static void main(String[] args) {
        // 构造代码块
        {
            
            int a = 1;
            System.out.println(a);
        }
        // 不可以,代码块限制作用域,生命周期
        //System.out.println(a);
        
        Person p1 = new Person("蟑螂",20);
        Person p2 = new Person("雷锋",32);
        
        
    }
}

 

抽象类复习与继承图谱快捷键:
package com.itstra.demo07;

public abstract class Employee {
    public abstract void work();
}
package com.itstra.demo07;

public class JavaEE extends Employee{

    @Override
    public void work() {
        System.out.println("javaEE工程师正在工作");
    }
    
}
package com.itstra.demo07;
/*
 * 继承图谱快捷键:Ctrl + T
 */
public class Test {
    public static void main(String[] args) {
        JavaEE ee = new JavaEE();
        ee.work();
    }
}

 

文档注释:
package com.itstra.demo08;
/*
 *     实现整数求和
 */
public class GetSum {
    /**
     * 方法getSum实现的是两个整数求和
     * @param a
     * @param b
     * @return sum
     */
    public static int getSum(int a,int b) {
        return a + b;
    }
}
自己封装:右击->点击Export ->选择Javadoc ->点击Next

 

综合小案例
package com.itstra.demo09;

public abstract class Employee {
    private String name;
    private String id;
    
    // 开发标准
    public Employee() {
        
    }
    
    public Employee(String name,String id) {
        this.name = name;
        this.id = id;
    }
    
    // 方法工作
    public abstract void work();

    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;
    }

    
}
package com.itstra.demo09;
/*
 * 接口
 */
public interface Vip {
    public abstract void services();
}
package com.itstra.demo09;

public class FuWuYuan extends Employee implements Vip{
    public FuWuYuan() {
        super();
    }
    
    public FuWuYuan(String name,String id) {
        super(name,id);
    }

    @Override
    public void services() {
        System.out.println("服务员倒酒");
    }

    @Override
    public void work() {
        System.out.println("服务员上菜");
    }
}
package com.itstra.demo09;

public class JingLi extends Employee{
    public JingLi() {
        
    }
    private double money;
    
    public JingLi(String name,String id,double money) {
        super(name,id);
        this.money = money;
    }

    public double getMoney() {
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }

    @Override
    public void work() {
        System.out.println("监督 ");
    }
    
    
    
}
package com.itstra.demo09;

public class ChuShi extends Employee implements Vip{
    public ChuShi() {
        
    }
    
    public ChuShi(String name,String id) {
        super(name,id);
    }

    @Override
    public void services() {
        System.out.println("加菜");
    }

    @Override
    public void work() {
        System.out.println("做菜");
    }
}
package com.itstra.demo09;

public class Test {
    public static void main(String[] args) {
        // 创建一个经理  2个服务员
        JingLi jl = new JingLi("hunter","经理022",62012);
        jl.work();
        
        FuWuYuan fy1 = new FuWuYuan("小强","服务员021");
        FuWuYuan fy2 = new FuWuYuan("水哥","服务员025");
        
        fy1.work();
        fy1.services();
        
        fy2.work();
        fy2.services();
        
        ChuShi cs1 = new ChuShi("雷达上","厨师023");
        ChuShi cs2 = new ChuShi("情景二","厨师210");
        
        cs1.work();
        cs1.services();
        
        cs2.work();
        cs2.services();
    }
}

 

posted @ 2018-04-03 21:41  让优秀成为一种习惯  阅读(153)  评论(0编辑  收藏  举报