JavaSE基础之面向对象

1.类和对象

       a. 对象:(万事万物皆可为对象)

                所谓的对象就是由一个抽象的到具体某些属性的一个形式,即通过new一个实例化的类,封装一些特有的属性

       b. 类:就是指抽象,看不见摸不到的东西

        一般情况下创建对象的语法:(也可以通过反射创建)

                类名 对象名 = new 类名();        //通过构造方法创建

2.构造方法

        构造方法是一个与类同名且没有返回值类型(连void也没有)的方法。默认情况下会有一个无参构造方法,但是一旦定义了有参构造,则系统默认的无参将会失效。

        作用:用来创建当前类的实例化对象,并对初始化其成员变量

        语法:        修饰符 类名(参数列表){方法体}

3.关键词this

        this关键词代表当前对象的引用,即谁调用,谁就是this。

public class This_01 {

    public static void main(String[] args) {

        This_01 t = new This_01();
        System.out.println(t);//输出t的地址

        This_01 s = t.m1();//由于m1()方法中返回this,所以s也是t的引用
        System.out.println(s);//此时s输出的地址仍为t的地址
    }

    public This_01 m1() {
        System.out.println(this);//这里的this,是因为t.m1()调用,所以this是指向t的
        return this;
    }
   
}

        用法:this用在成员方法中和构造方法中,均是为了区分同名的成员变量和局部变量

4.关键字static

        作用:在有static修饰的属性和方法中,方便可以在没有new实例化对象的情况下,通过类名.属性或方法来进行调用

        static可以修饰:a.静态变量        b.静态方法        c.静态代码段

                静态代码段:

    /**
     * 在类加载的时候(即访问一个类的静态属性时)才会执行,并且只执行一次,在构造方法前执行
     */
    static {
        // java代码
    }

5.面向对象的三大特性:        封装、继承、多态

        a.封装:把对象的所有组成成分写在同一个类中,再使用访问修饰符将数据隐藏起来,控制其他用户对该类的访问权限,增强代码的安全性

                访问修饰符:有高到底

    public int a;//public 所有地方都可以访问到
    protected int b;//protected 属于继承权限,在同包、同类、子类中 可以访问到
    int c;//不写即默认,默认为包权限,在同包,同类下可以访问,其他都不行
    private int d;//private 除了当前类中,其他哪里也不行

        b.继承:从已经抽象好的类中派生出新的类,新类既包含已有类的属性和方法,也可以再扩展新的属性和方法

                继承的特点:

                        1):单继承,多实现。即一个类只能继承一个父类,可以实现对个接口

                        2):有private修饰的成员变量或方法不能被子类继承

                语法:

[修饰符] class 子类 extends 父类{
    //类体
}

              关键字super:

                        1):用在子类的成员方法中,用来区分子类和父类同名的成员方法/变量

                        2):用在子类的构造方法中,依旧可以用来区分子,父类的同名方法/变量,如果是用来调用父类的构造方法时,super(参数);必须放在子类构造方法的第一行 

                @Override(覆写):前提是在extends继承体系下,父类无法满足子类的需求时,才会发生覆写

                关键字final:可以修饰类、变量、成员方法

                        类:不能被继承(终结类)

                        成员方法:不能别覆写

                        变量:在整个程序的生命周期内,不能进行二次赋值,并且如果是成员变量没有默认值

                运算符instanceof:

        A b = new A();
        if (b instanceof A) {// 判断b是否是由A实例化来的,返回值是boolean

        }

        c.多态:        父类 变量名 = new 子类();

                多态的前提条件:在继承关系的体系中

                多态的体现形式:

                        1).变量(成员/局部):用父类进行声明,子类对象用来赋值

                        2).实参/形参:参数列表使用父类声明变量,方法调用时传入子类对象

                        3).返回值:返回值类型使用父类声明,return的时候 返回子类对象

Animal dog;//用父类类型声明一个dog变量,    不是多态
dog=new Animal();//父类引用指向父类对象    不是多态
dog=new Dog();//父类引用指向子类对象       是多态

                多态的特点:

                        1).父类没有,子类无论有没有,都无法进行访问

                        2).父类有成员方法,子类也有相同的成员方法,则执行子类的(发生覆写)

                        3).父类有成员方法,子类没有成员方法,则执行父类的

6.Object类:所有类的祖宗类,即如果一个类没有继承另一个类,该类就默认继承Object

        equals()方法:默认比较两个对象的内存地址,也可以根据自己的需求进行覆写

        toString()方法:返回对象的字符串表示形式

7.抽象类:        使用abstract修饰的类

        语法:

修饰符 abstract class 类名{
    [修饰符] abstract 返回值类型 方法名();
}

                1).含有抽象方法的类,一定是抽象类(反之不对);抽象类必须被继承,抽象方法的实现就是去掉abstract并加上方法体,如果父类的抽象方法没有被全部实现,那么这个子类,也需要是抽象类

                2).抽象类中可以有抽象方法也可以全部都是普通方法(包括实例方法、静态方法),在抽象类中可以定义实例成员属性、静态成员属性,还可以书写构造方法

                3)抽象类不能被实例化,即不能new 对象

                4)abstract和final不能同时修饰一个类

8.接口:        一个接口只有方法的声明没有方法的实现

        语法:

修饰符 interface 接口名{
    修饰符 static final 数据类型 变量名=值;
    修饰符 abstract 返回值类型 类名(参数);
}

                1).接口中的方法必须全用public abstract修饰,成员变量必须用public static final修饰

                2).接口中不能有普通方法和构造方法

        接口与接口之间:多继承,用逗号隔开        extends xxx,xxxx

        类与接口:通过implements 多实现        implements xxx,xxxx

                注:一个抽象类实现接口,可以实现 0~n个抽象方法;一个非抽象类实现接口,需要实现所有的抽象方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值