A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小忧伤 中级黑马   /  2016-5-27 22:19  /  268 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

day07:
一.类的概念:
        1.定义类:class 类名{
                        //类体
                        //成员变量
                        //成员方法
                        //构造方法
                        //代码块
                        //内部类
                  }
二.类和对象之间的关系:
        1.类是一个概念模型,它类似于"图纸",只需要有一份;
        2.对象是通过new语句在堆中产生对象空间。它类似于通过图纸生产出来的产品,可以多个;
三.封装:
        1.面向对象的三个特征:1.封装、2.继承、3.多态
        2.封装:
                成员属性私有化,对外提供公有的成员方法为属性赋值或者获取值;
四.构造方法:
        1.在实例化对象时会自动调用的方法;
        2.构造方法的语法:
                [访问修饰符] 构造方法名(必须与类名相同){
                }
        3.Java中构造方法的特点:
                1).一个类可以不定义构造方法,编译器会自动添加一个默认无参的;
                2).如果定义了构造方法,编译器将不会添加任何构造方法了。
                3).构造方法可以重载;
                4).构造方法之间可以互相调用,使用this()关键字.
                5).构造方法可以调用成员方法;成员方法不能调用构造方法;
                6).构造方法不能声明返回值类型,也就不能返回任何类型的值。但可以写
                   return;语句,表示:结束方法的执行;
五.this关键字:
        1.每个类中有隐式的包含一个变量:this
        2.这个变量是由JVM在实例化一个对象时,自动赋值。赋值为当前对象的引用;
        3.使用this可以访问本类的:成员变量、成员方法、构造方法;
          注意:使用this访问本类的其它构造方法时,必须在某个构造方法的第一有效代码;
六.匿名对象:
        1.没有名字的对象;
        2.Student stu = new Student();//有名的对象
          new Student();//匿名对象
七.基本类型和引用类型作为方法的形参:
        main(){
                int a = 10;
                int b = 20;
                change(a , b);
                System.out.println(a);//10
                System.out.println(b);//20
                int[] intArray = {1,3,43};
                change(intArray);
                System.out.println(intArray[0]);//1000
        }
        public static void change(int a1,int b1){
                a1 = 100;
                b1 = 200;
        }
        public static void change(int[] intArray){
                intArray[0] = 1000;
        }
day08:
一.继承:
        1.使用关键字:extends;
        2.Java中的继承的特点:
                1).只能单继承;
                2).可以多级继承;
        3.父类中的私有成员、构造方法不会被子类继承;
        4.当我们实例化子类对象时,会先实例化父类对象;
        5.继承时,成员的特点:先在子类中找,如果没有,上父类中找。父类中也没有,报错;
        6.方法重写:
                1).在子类中定义跟父类一样(返回值类型、方法名、形参列表)的方法,这叫:方法的重写
                2).重写时,子类的访问修饰符可以跟父类相同,也可以比父类更宽;
        7.方法重载和方法重写的区别:
                1).方法重载:是指在一个类中;
                   方法重写:要有子父关系,在子类中定义跟父类中相同的方法;
        8.当实例化子类对象时,会先实例化父类对象,此时JVM会自动调用父类中空参的构造方法。
          如果父类中没有空参构造方法,子类中的任何构造方法都要显示的使用super()调用父类中带参的构造方法;
二.抽象类:
        1.定义:abstract class
        2.抽象类中可以定义:
                1).普通、静态成员变量;
                2).普通、静态成员方法;
                3).构造方法;
                4).抽象方法;
        3.抽象类的作用:
                1).作为父类,代码重用;
                2).对子类形成一种约束;
day09:
一.接口:
        1.定义:interface
        2.接口中可以定义:
                1).成员变量:必须是public static final
                2).抽象方法:必须是public abstract
        3.子类实现接口使用关键字:implements
        4.子类可以同时实现多个接口;
        5.接口的作用:
                1).对子类的功能扩展;
                2).接口多态
        6.类和类:继承关系,使用关键字extends,只能单继承;
          类和接口:实现关系,使用关键字implements,可以同时实现多个接口;
          接口和接口:继承关系,使用关键字extends,可以多继承;
二.多态:
        1.父类的引用指向子类的对象;
        2.多态的好处:
                1).提高了代码的可扩展性;
                2).提高了代码的可维护性;
          多态的弊端:
                1).多态时,不能访问子类特有成员;
        3.多态时,成员的访问规则:
                1).总体规则:多态时,访问的成员在父类中必须要有,否则编译错误;
                2).成员变量(子父类中都有):编译看左边,运行看左边;
                   成员方法(子父类中都有):编译看左边,运行看右边;
                   静态方法(子父类中都有):编译看左边,运行看左边;
        4.多态的转型:
                1).向上转型:
                        Animal a = new Cat();
                2).向下转型:
                        if(a instanceof Cat){
                                Cat c = (Cat)a;
                        }
三.static关键字:
        1.可以修饰:成员变量、成员方法;
        2.修饰成员变量:表示:静态变量,被多个对象共享;存在静态存储区,只有一份存储空间。
          修饰成员方法:表示:静态方法;
        3.静态成员的访问方式:
                1).通过类名可以调用;
                2).通过对象名也可以调用;
        4.静态变量和成员变量的区别:
                1).所属不同:
                        静态变量属于"类"
                        成员变量属于"对象"
                2).存储位置不同:
                        静态变量存储在"方法区--静态存储区"
                        成员变量存储在"堆"中
                3).生命周期不同:
                        静态变量随着类的加载而加载,随着类的消失而消失;
                        成员变量实例化对象时,会加载到堆中;被垃圾回收器回收时,被清理;
                4).调用方式不同:
                        静态变量:使用类名调用;使用对象名调用;
                        成员变量:使用对象名调用;
四.final关键字:
        1.修饰类:表示"最终类",不能被继承;
          修饰方法:表示"最终方法",不能被子类重写;
          修饰变量(局部、成员):表示"常量",只能被赋值一次,之后不能被修改;
                        基本数据类型:值不能改;
                        引用数据类型:引用不能改;
day10:
一.包:
        1.创建包:package语句;
        2.package语句在一个源文件中最多只能有一个;可以没有;
        3.package语句必须放在这个文件的第一行有效代码上;
        4.导入包:import xxx.xxx.xxx.类名;
                  或者:
                  import xxx.xxx.xxx.*;
        5.import语句在源文件中可以有多条;
        6.import语句必须放在package语句之后,类定义之前;
        7.java.lang包中的类可以直接使用,不需要导包;
二.访问修饰符:
        1.宽到窄:public,protected,(默认),private
        2.public(公有):可以修饰类、类成员。表示任何包下的其它类都可以访问;
          protected(受保护的):可以修饰类成员。同包下访问。包外,可以被子类内部访问;
          (默认):可以修饰类、类成员。只能被同包下访问;
          private(私有):可以修饰类成员。只能被类内部其它成员访问;
三.类和类成员常用的修饰符:
        1.类:访问修饰符:public ,默认
              abstract
              final
        2.成员变量:访问修饰符:四种
                    static
                    final
        3.构造方法:访问修饰符:四种
        4.成员方法:访问修饰符:四种
                    abstract
                    static
                    final
三.代码块:
        1.静态代码块:
        2.构造代码块:
        3.局部代码块:
        4.执行顺序:
                静态代码块
                构造代码块
                构造方法
四.内部类:
        1.成员内部类:
                定义在类体中,可以访问外部类成员,包括私有的;
        2.局部内部类:
                局部内部类访问局部变量,要求局部变量声明为final.
        3.匿名内部类:
                new 父类/父抽象类/父接口 (){
                        //匿名子类的类体
                        //重写父类的方法
                }


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马