zoukankan      html  css  js  c++  java
  • java.1

    java.lang不用import

    在多态下,引用和对象可以是不一样的类型,一般引用变量是对象的父类

    final表示继承树的末端,修饰类的时候,类不能被继承,修饰方法的时候方法不能被重写,修饰的变量为常量

    非公有类只能被同一个包里面的类继承

    方法的覆盖,子类的方法参数必须完全一样,返回值要兼容(与父类相同或者是父类的子类),覆盖子类的方法要比父类权限更加开放或者一样

    重载,其实就是名字一样的两个方法,参数要不一样,返回值没有限制,这里参数的不一样还包括的参数的顺序,很神奇!

    接口

    抽象类

    不能被实例化的类,但是可以作为引用类型!!!
    抽象类除了被继承以外,别无他用 抽象类中可以有抽象的和非抽象的方法 abstract class classname{}

    抽象方法

    抽象方法必须被覆盖,有抽象方法的类一定要标记成抽象类
    public abstract void eat();
    抽象方法存在的意义就是为了多态!!! 为子类定义出了共同的协议

    object---java.lang.object

    object类使所有类的终极父类
    getclass()告诉你对象是从哪里被初始化的

    编译器是通过引用的类型来判断有哪些方法可以调用,而不是对象的类型

    你把子类多态定义为父类,只能看到父类中定义过的那些方法

    x instanceof Y 变量x是类Y的一个实例

    java不允许多重继承,一个子类只能继承一个父类,避免了致命方块的问题

    接口

    java接口中所有的方法都是抽象的!就好像100%抽象方法发抽象类
    public interface name{..} public class x implements name{...}
    一个类可以在继承的基础上再去实现接口,并且可以同时实现多个接口。记得要重写接口中的每一个抽象方法
    不同的继承数可以实现相同的接口
    只要实现的相同的接口,这些类就可以在这个接口的基础上完成多态的通用

    super关键字用来引用父类的方法

    堆与栈

    对象是被放在堆上的
    实例变量是放在对象中的,也就是在堆中,是在类的方法之外定义的变量
    而局部变量是在栈中的,是类方法本身的局部变量或参数
    如果局部变量是一个对于对象的引用,只有局部变量本身在栈上,引用的对象仍然在堆上

    构造函数是没有返回值与类的名字一样!构造函数不会被继承

    对于实例变量而言,他们是有默认值的0/0.0/false/null

    继承的构造函数的调用顺序,从下往上一次调用然后从下往上依次执行!,最终的效果是先执行父类的构造函数在执行子类的构造函数

    注意!对于编译器而言,他只会调用父类发没有参数的构造函数,也就是super()!super()只能在构造函数的第一行执行

    可以使用this()来调用同一个类的其他的构造函数,注意super()和this()不能同时使用,this()同样只能放在第一行

    实例变量的生命周期与对象的生命周期相同,对象的生命周期要看他的引用变量。一个对象没有引用了,或者他的引用的生命周期结束,那么这个对象就会被回收

    静态方法

    一个静态方法的意思是说 他不依赖于实例变量,只依赖于传入的参数

    把构造函数设置为私有的,可以拒绝非抽象类被初始化,那么这个类你只能调用它的静态方法了。

  • 相关阅读:
    原型
    构造函数
    异常处理
    逻辑中断
    1. 两数之和
    面向对象(进阶篇)
    面向对象(初级篇)
    面向对象
    迭代器/生成器
    模块&字符格式化
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/6243208.html
Copyright © 2011-2022 走看看