java内存---java内存垃圾回收----属性封装-----继承

来源:互联网 发布:邓肯马龙交手数据 编辑:程序博客网 时间:2024/05/16 07:36

今天学习了部分java课程,以下为今天课堂的总结:

   java 内存:

两种内存存在形式:

栈内存-------------------------------------------堆内存

【基本数据类型】                                     开辟的数组空间

【首地址】                                                  对象空间【成员变量,成员方法】


java垃圾回收(Gc):

jvm(java 虚拟机)在执行程序的过程中,会启动垃圾回收线程,该程序会自动扫描内存中数据,判断是否为垃圾数据;如果是垃圾数据,将会回收该数据释放内存空间,可以防止内存溢出。

内存溢出:内存占满了,不能写入新的数据,导致程序不能继续执行。


注意:垃圾回收不需要程序员处理,同时程序员不能干预垃圾回收过程,但是程序用完的数据,需要断开对其的引用。


面向对象的三大特点:封装,继承,多态


封装的目的:程序的安全性和完整性

封装:将类中的成员变量、成员方法、构造器隐藏,不让外部的其他类访问



属性封装:1.将属性设为private

                     2.提供公共的getter和setter方法


子类可以继承同包下父类所有的非私有化属性和方法;

子类在非同包下只能继承公共的和受保护的属性和方法。


子类不能继承父类的构造器,但是可以调用父类的构造器。



继承:当多个类出现相同的属性和方法时,我们将这些属性和方法抽取出来放入一个类中,让多个类共享这个类中的属性和方法。其中,这个类我们叫做父类,多个类我们叫做子类。

作用: 减少类之间重复代码的定义,提高代码的重用性


继承的语法:

【修饰符】  class 子类名 extends 父类{}


继承的范围:  子类只能继承父类中的成员变量和成员方法,不能继承构造器

    1.同包下,子类继承父类的非私有的属性和方法

     2.不同包下,子类继承父类的公共的和受保护的属性和方法



子类的扩展:

子类继承父类的属性和方法,同时还可以可以扩展自己特有的属性和方法。


继承的特点:  java 单继承,不可多继承,但是允许类之间多层继承关系


方法重写的前提:1.继承  2.子类修饰符范围大于父类  3.返回值类型、方法名、参数相同


关键字 super


super代表父类对象

1.使用方法;super.成员变量/成员方法

如果子类的属性和方法覆盖了父类的属性和方法时,在子类中,直接访问属性和方法,访问的时子类的属性和方法,要想访问父类的属性和方法需要使用super关键字

在子类实例化的时候,系统会先实例父类,然后再实例化子类

系统在实例化父类时,默认调用父类的无参构造器

2.super(参数) 可以用于调用父类的有参构造器,在子类构造器中使用supper来指定


多态:

多态的实现情况:1.继承 2.方法重写 3.向上转型


向上转型:【子对象】由子类型转为【父类型】


子对象向上转型之后,只能访问继承的属性和方法,如果该方法被重写,则访问重写之后的方法


多态的作用:减少代码量,减少代码的耦合性


方法重写的概念:子类对继承的方法进行重新定义的现象


方法重写的例子:

package _0303;


public class Override1 {
int a,b,c;
public void test1(){
System.out.println("Override1---------------test1");
}
public void test1(int i){
System.out.println("Override1----"+i+"-------test1");
}


}

package _0303;


public class Override2 extends Override1{
public void test1(){
System.out.println("Override2---------------test1");
}


}


多态和继承的例子:

package duotai;


public class C1 extends P{
    @Override
    public void test1() {
    // TODO Auto-generated method stub
    System.out.println("C1 11111111");
    }
}

package duotai;


public class C2 extends P{
public void test1(){
System.out.println("C2   2222222");
}
}

package duotai;


public class P {
public void test1(){
System.out.println("test1p111111");
}
public void test2(){
System.out.println("test2p111111");
}


}


package duotai;


public class Test1 {
     private void test(P p) {
         p.test1();        
}
     public static void main(String[] args) {
Test1 t1 = new Test1();
t1.test(new P());
t1.test(new C1());
t1.test(new C2());
}
}

1 0
原创粉丝点击