2021年1月16~17日 总结 Java方法、引用数据类型、类相关、OO相关概念

进堆的变量,都遵循gc垃圾回收机制
===================
像printf("%d%d%d",a,b,c)这种可变参数的函数怎么写?

如下例中定义了一个能计算任意个参数平均值的方法:

public class Test{

    public static double avg(double...a){
        double sum = 0;
        for(int i = 0;i<a.length;i++) {
            sum+=a[i];
        }
        return sum/a.length;
    }
    public static void main(String[] args) {
        System.out.println(avg(1));
        System.out.println(avg(1,2));
        System.out.println(avg(1,2,3));
        System.out.println(avg(1,2,3,4,5,6,7,8,9,10));
    }
}

======================
重载只跟参数有关,与返回值无关

=================
测试类、实体类的区别:

暂时理解成:JAVA中的测试类是用来是用来对写好的其他类进行测试的,是main方法所在的类。

===============
new一个对象,如果没有初始值,会设默认值
但是
Car[] cars = new Car[2];只开了空间,但是没有对象,不能理解成创建了两个Car对象的数组

===============================

字符串常量池原本在方法区中,新版本把常量池移到堆中了

===============================

 继承中,子类的一个特性:

class People{
    String name;
    int age;
    byte gender;

}
class Chinese extends People{
    String greeting = "Nihao!";

    public void Sayhello(){
        System.out.println(greeting);
    }
}
class American extends People{
    String greeting = "Hello!";

    public void Sayhello(){
        System.out.println(greeting);
    }
}
class NewYorker extends American{
    String greeting = "Hey!";

}

public class Test{

    public static void main(String[] args) {

        Chinese ZhangSan = new Chinese();
        American Jack = new American();
        ZhangSan.Sayhello();
        Jack.Sayhello();
        NewYorker Jim = new NewYorker();
        Jim.Sayhello();   //这里输出Hello
} }

发现:子类继承父类的方法,并且不重写继承得到的方法,调用该方法,输出的并不是自己的成员变量,而是父类的成员变量。

============================================================================

子类方法重写父类方法时,权限必须大于等于父类方法权限,否则会无法编译:

java: ShanDongRen中的Sayhello()无法覆盖Chinese中的Sayhello(),正在尝试分配更低的访问权限; 以前为public

=========================================================================

抽象方法不能写方法体:

 

 ===================================================================

@Override

类似于有功能的注释,一般写在覆盖父类同名方法的子类方法前面,不仅有提示的功能,也可以让编译器检查规范

=================================================================

接口可以理解成多个类的公共规范,接口中可以包含常量、抽象方法、默认方法、静态方法,接口的实现类必须包含接口中所有的抽象方法(这一点最能体现:接口是用来规范类的)

==================================================================

下面这个ER图可以展示目前学到的JAVA面向对象中的概念之间的联系:

 

 

 

posted @ 2021-01-17 19:28  lucascube  阅读(115)  评论(0)    收藏  举报