第二部分——JAVA面向对象

一、面向对象--->先了解类,对象的概念

        类三大特征:封装、继承、多态。

        关系:类的实现必须依靠对象,类封装了对象的属性和方法

        创建对象:类名称 对象名称 = new 类名称() ;   

        访问属性和方法: 对象.属性 ;      对象.方法(实际参数列表) ;

        同一个包下,不能有重复的类名;一个.java文件只能有一个public类。

        了解内存机制,栈内存、堆内存、方法区等。

                栈内存存放基本数据类型(包含变量和值)和引用类型的引用

                堆内存存放引用数据类型数据,创建的对象等,具有垃圾回收机制。

二、内部内

        成员内部类:

package com.tn.classes;

public class extend_class {
    /*内部类分四种*/
    /*成员内部类*/
    public static void main(String[] args) {
        Out outter = new Out(18);
        System.out.println(outter.age);
        //Out.In inner = new Out.In(19);
        Out.In inner = outter.new In();
        inner.todo();
    }

}
class Out{//独立定义于当前public类之外
    public int age ;
    public Out(int ages){
        this.age = ages;
    }
    class In{
        public int age = 19;
        public void todo(){
            System.out.println(age);
            System.out.println(Out.this.age); 
        }
    }
}

(1)成员内部类定义于public类之外;

(2)创建对象

        外部类:普通格式

        内部类:外部类.内部类 对象名 = 外部对象.new 内部类()

(3)访问属性和方法时,默认以内部类优先

(4)访问外部类属性和方法:外部类.this.属性    外部类.this.方法(参数列表)

        

        静态内部类:

             (1)在成员内部类基础上,将内部类添加static修饰符,可使内部类不受外部类限制;

             (2)它不能使用外部类的非static成员变量或者方法。

三、包装类

        (1)包装类符合java面向对象的设计原则,其内存原理和对象的存储类似;

        (2)分为Number的子类:数据类   和   Object的子类:Character、Boolean;

        (3)装箱:基本数据类型------>引用数据类型;

                 拆箱:反之;

        (4)Interger的初始化<====>new一个对象,变量名代表在栈中占有的地址值。

package com.tn.boxes;

public class box {
    public static void main(String[] args) {
        Integer a=1000,b=1000;
        System.out.println(a == b);
    }
}

上述返回false,因为占有不同地址。

四、抽象类

        (1)抽象类必须加入abstarct关键字,不能加入final、private(都导致无法创建子类);

        (2)抽象类中可以没有抽象,如果要写抽象方法,则写在接口中或该类中,且没有方法体({没有花括号部分}(jdk1.8以前));

        (3)抽象类不能被new实例化(抽象父类被JVM实例化);

        (4)抽象类必须被子类继承,若子类不是抽象类则必须重写抽象类的全部抽象方法。

        (5)抽象类的子类实例化过程:先调用父类的默认构造器(无参),然后调用子类本身的构造器。

        (6)抽象类中的属性为普通属性,接口则必须是公共静态常量

五、接口

        一个类,内部方法为抽象方法( public abstract),属性为全局常量(public static final )时,省略以上关键字,直接定义属性和方法,便可将该类修改成implements接口。

        (1)子类可同时继承一个父类,可实现多个接口

        (2)接口本身不可使用,需在子类使用,子类若不是抽象类则必须实现接口的所有抽象方法;

         (3)接口无构造器,抽象类可以有;

         (4)对于interface接口本身,由于都是抽象部分,所以没有具体的实现,允许多继承。

六、多态

        两种体现:

                一个类中方法的多态性:重写

                父子类中方法的多态性:重载、子类是父类的多态;

        父类子类对象的转换

                向上转型:  父类 父类对象 = 子类对象;    此时父类对象可以调用子类覆盖和继承自父类本身的方法,但不能调用子类特有的方法

        关键字:instanceof返回boolean类型,判断当前对象是否为该类实例。

                        Object是所有类的基类,且能接收任意类型的(引用?)数据类型;

七、异常

        try--catch(Exception e)--finally语句,用于发现异常并处理,其对栈内存和堆内存的return备份值处理不同。

        所有异常产生后,都会产生一个异常类的实例对象,或许由JVM创建,也可以通过throw抛出异常(不会报错,会直接抛出异常)。

        父类Throwable(可能的抛出)存在两个子类:Error和Exception

                只要是RuntimeException的子类,则表示程序在操作的时候可以不必使用try…catch进行处理。

八、重载(Overload),重写(Override)

        重写注意:

                子类的重写方法访问权限不能比父类的访问权限

                声明为staticprivate的方法不能重写,可以声明。

        重载的方法与其返回值类型无关,与访问权限无关;

九、核心机制

        跨平台原理:使用JVM。在不同的操作系统平台有不同的JVM,其中的解释器组件可实现与操作系统的通信,从而避免了底层平台差异,实现“一次编译,随处运行”。

        垃圾回收机制:在程序运行时自动开启,在JVM空闲时,自动回收不再使用的内存空间。

十、一些关键字

        this:在一个构造方法中,若要调用另一个构造方法,则必须把this()写在构造方法的第一行。

        static:写在类、方法、属性等中,静态的内容只在内存中存在一份,可理解为为所有对象共有

                静态成员在类加载时就完成初始化

        final:通过final修饰的属性和变量都变为常量,即不能再被赋值的属性和变量

                final修饰类则类不能被继承,修饰方法则方法不能被子类重写。

以上内容具体请参考:

(36条消息) Java面向对象(知识点整理)_java面向对象知识点总结_自嘲的丶微笑的博客-CSDN博客

        

               

        

        

                

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值