Java学习笔记

1,继承性

继承性:子类继承了父类之后,子类就获取了父类的属性和方法。

继承性的格式:

class A{
    public void eat(){
        System.out.println("吃饭");
    }
}


class B extends A{
    public void sleep(){
        System.out.println("睡觉");
    }

    public static void main(String[] args) {
        B b=new B();
        b.sleep();
        b.eat();
    }

}

在这段代码中,A是B的父类,所以B可以调用A中的eat()方法,这就是继承性。

继承性的好处
1:减少了代码的冗余,提高了代码的复用性
2:便于功能的扩展
3:为之后的多态性的使用,提供了前提

Java中关于继承性的规定
1,一个类可以被多个子类继承
2,一个类只能有一个父类,单继承
3,子夫类是相对的概念
4,子类直接继承的父类为直接父类,间接继承的父类为间接父类
5,子类继承父类以后,就获取了直接父类以及所以直接父类中声明的属性和方法
 

注意:1,如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类
           2,所以的java类(除java.lang.Object类之外)都直接或间接的继承于java.lang.Object类
           3,意味着,所以java类具有java.lang.Object类声明的功能

2,多态性

1,理解多态性:可以理解为一个事物的多种形态。
2,何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)

3,多态的使用:虚拟方法调用
            有了对象的多态性以后,我们在编译期,只能调用父类中生明的方法,但在运行期,我们实际执行的时子类重写父类的方法。
            总结:编译看左边,运行看右边

4,多态性的使用前提:
a:类的继承关系
b:要有方法的重写

5,对象的多态性只适用于方法,不适用于属性
 

3,接口

1:接口使用interface来定义
2:java中,接口和类是并列的两个结构
3:如何定义接口:定义接口中的成员
        3.1:JDK7及以前:只能定义全局常量和抽象方法
            >全局常量:public static final的,但是,可以省略不写
            >抽象方法:public abstract的
以下是接口的使用:

interface A{
    int x=0;
}

class B{
    int x=1;
}

class C extends B implements A{
    public void pX(){
        System.out.println(super.x);
        System.out.println(A.x);
    }

    public static void main(String[] args) {
        new C().pX();
    }
}

在此代码中,类C不光使用了子父类,也使用了接口,可以看出,接口在一定程度上,也同样拥有继承性,但这种继承性,有一定的规范性,并且,在接口中,不能定义构造器,所以,这意味着接口不能够实例化

4:java开发中,接口通过让类去实现(implements)的方法来使用
     如果实现类覆盖了接口中的所有抽象方法,则此实现类就可以实例化
     如果实现类没有覆盖接口中的所有抽象方法,则此实现类仍为抽象类


5:java类可以实现多个接口---->弥补了java单继承性的局限性
    格式:class AA extends BB implements CC,DD,EE {   }


6:接口与接口之间可以继承,而且可以多继承


7:接口的具体使用,体现多态性

8:接口,实际上可以看作是一种规范

4,代码块

类的成员之四,代码块(或初始化块)

1,代码块的作用:用来初始化类,对象
2,代码块如果没有修饰的话,只能用static
3,分类:静态代码块vs非静态代码块

4,静态代码块
    >内部可以有输出语句
    >随着类的加载而执行,而且只执行一次
    >作用:初始化类的信息
    >如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行
    >静态代码块的执行,优先于非静态代码块的执行
    >静态代码块内只能调用静态的属性,静态的方法,不能调用非静态的结构


5,非静态代码块
    >内部可以有输出语句
    >随着对象的创建而执行
    >每创建一个对象,就执行一次非静态代码块
    >作用:可以在创建对象时,对对象的属性进行初始化
    >如果一个类中定义了多个非静态代码块,则按照声明的先后顺序执行
    >非静态代码块内部可以调用静态的属性,静态的方法,或非静态的属性,非静态的方法


对属性可以赋值的位置:
1:默认初始化
2:显式初始化
3:构造器中初始化
4:有了对象以后,可以通过“对象.属性”或“对象.方法”的方式,进行赋值
5:在代码块中赋值


执行先后顺序:1->2/5->3->4


总结:由父及子,静态先行
 

5,Final关键字

final:最终的
1:final可以用来修饰的结构:类,方法,变量
2:final用来修饰一个类:此类不能被其他类继承
                比如说:String类,StringBuffer类

3:final用来修饰方法:表面此方法不可以被重写
                比如说:Object中getClass();

4:final用来修饰变量:此时的“变量”就称为是一个常量
                4.1:final修饰属性,可以考虑赋值的位置有:显式初始化,代码块中初始化,构造器中初始化
                4.2:final修饰局部变量,尤其是final修饰形参时,表面此形参是一个常量。当我们调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值。

static final:用来修饰属性,全局常量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值