黑马程序员技术交流社区

标题: 学习后技术交流 [打印本页]

作者: 黑马峰    时间: 2018-11-14 20:45
标题: 学习后技术交流
在来到黑马学习后,我每天不停的学习,不停的进步,有许多不懂的也在老师的指导下有所解惑.
在这里学习的每一天都感觉自己过的很充实,接下来就说一说这段时间的所学的一些知识.
Static
Static         静态关键字(当多个对象中需要有数据被共享的时候,那么可以使用该static关键字)
                用来修饰成员变量和成员方法
特点:        被所有的对象所共享;
可以直接使用类名来调用.
        如先定义好了一个学生类Student,然后类中有成员static Stirng graduateFrom;
        在测试类中即可以 Student.graduateFrom = “传智播客”;
                静态所修饰的成员加载优先于对象
                        即随着类的加载而加载
                例子:  
                        有个Student类,有成员 String name;
                                                                int age;
                                                                static String graduateFrom;
                                                有方法        public static void sleep() {}
public static void eat () {
                                        System.out.print(name); 报错,因为name不是静态
                                        System.out.print(garduateFrom); 可以
                                        sleep();  可以
                                        play();  不可以
}
                                                                public void play() {
        System.out.print(graduateFrom);
        eat();
}
                在静态方法中没有是否有this对象?
                        在静态方法中没有this对象,因为静态方法随着类的加载而加载,优先于所有对象.               
优点:
                对对象的共享数据提供单独空间的存储,节省空间,没有必要每一个对象都存储一份.
                可以直接被类名调用,不用在堆内存创建对象.
缺点:
                访问出现局限性.(静态虽好,但只能访问静态)

Math的常用api:
                math.pi;        math.abs(  );        math.ceil(  );        math.floor(  ); math.round(  );                                        math.max(a,b);        math.min(a,b);        math.pow(a,b);        math.random();

利用Math.random();获得1-10的整数;
                int a = (int)(Math.random() * 10 ) + 1 ;
继承
继承:从多个类中抽取共性的内容做为一个父类,让其他类作为子类去继承父类获取到父类的成员.

继承的特点:        只支持单一继承.
                        支持多层继承.
                一个子类只能有一个父类,但是可以多层继承即可以有爷爷
继承中成员变量的特点:
                子类能获得父类非私有的成员变量,当子类和父类成员变量相同用子类的成员变量,不同的直接使用父类的成员变量.
继承中成员方法的特点
                子类能使用父类的成员方法,当子类的成员方法和父类的成员方法名字相同时会发生重写.
方法重写的应用场景:
                当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能
方法重写的注意事项:
                方法重写不能重写父类私有的方法;
                权限必须大于等于父类方法的权限
                重写利用注解@override

继承中构造方法的执行顺序:
                子类的所有构造方法没有调用父类中的构造方法,则会在子类中的所有构造方法中的第一行默认添加super();调用父类的空参构造.
                因为当我们对子类对象初始化时,必须要先给父类初始化,因为子类可能用到父类的内容.
                在子类的构造方法也可以在第一行调用本类的其他构造方法,但是必定有一个构造方法要调用父类的构造方法.
                super()和this()只能在构造方法的第一句,且只能存在一个.
Final:  修饰符,可以用于修饰类、成员方法和成员变量
                Final所修饰的类不能被继承。
                当final修饰方法时,不能被子类重写。如:
                                Class Animal{
                                        public final void eat () {
        System.out.print(“吃东西”);
}
                                }
                                Class Dog extends Animal{
        Public void eat{                        这里就提示错误了!即不可重写
}
}


                Final所修饰的变量是不能被修改的,是常量。
                        常量:字面值常量:1,2,3…………
                                自定义常量: 被final所修饰的成员变量,一旦初始化则不可改变
                        注意:自定义常量必须初始化,可以选择显示初始化(直接赋值)或者构造初始化.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2