Java 基础知识 II

Java 基础知识 II

面向对象

1.什么是类?什么是对象?

现实生活中是由很多很多对象组成的,基于对象抽出了类

对象:软件中真实存在的单个个体/东西

类:类别/类型,代表一类个体

类是对象的模子,对象是类的具体的实例

类中可以包含:
对象的属性/特征-----------------------成员变量
对象的行为/动作-----------------------方法

一个类可以创建多个对象

如何创建类?如何创建对象?如何访问成员?

public class Student { //Student类就是我们自己造的一种引用类型
        //成员变量
        String name;
        int age;
        String address;
        //方法
        void study(){
            System.out.println(name+"在学习...");
        }
        void sayHi(){
            System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
        }
    }

    public class StudentTest {
        public static void main(String[] args){
            //创建一个学生对象
            Student zs = new Student();
            //给成员变量赋值
            zs.name = "zhangsan";
            zs.age = 25;
            zs.address = "河北廊坊";
            //调用方法
            zs.study();
            zs.sayHi();

            Student ls = new Student();
            ls.name = "lisi";
            ls.age = 24;
            ls.address = "黑龙江佳木斯";
            ls.study();
            ls.sayHi();

            //1)创建了一个学生对象
            //2)给所有成员变量赋默认值
            Student ww = new Student();
            ww.study();
            ww.sayHi();

        }
    }

方法的重载(overload/overloading):---------------更加方便用户的访问
发生在同一类中,方法名相同,参数列表不同
编译器在编译时会根据方法的签名自动绑定方法

//若想访问对象,需要通过引用zs
引用
数据类型 引用类型变量 指向 对象
Student zs = new Student();

方法的签名:方法名+参数列表

2.构造方法

构造方法:构造函数、构造器、构建器---------复用给成员变量赋初值代码
作用:给成员变量赋初始值
与类同名,没有返回值类型(连void都没有)
在创建(new)对象时被自动调用
若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供
构造方法可以重载
this:指代当前对象,哪个对象调用方法它指的就是哪个对象
​ 只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:

    this.成员变量名-------------访问成员变量

        成员变量与局部变量同名时,若想访问成员变量则this不能省略

this.方法名()-----------------调用方法

this()---------------------------调用构造方法
null:表示空,没有指向任何对象
若引用的值为null,则该引用不能进行任何点操作了,
若操作则发生NullPointerException空指针异常

成员变量和局部变量是可以同名的:
----使用的时候默认采取就近原则
----若想访问成员变量,则this不能省略

成员变量:写在类中,方法外--------有默认值
局部变量:方法中------------------------没有默认值

3.引用类型数组:

引用类型数组:
与基本类型数组的区别:
给数组元素赋值必须new一下
若想访问对象数据必须通过数组元素打点

Student[] stus = new Student[3]; //创建Student数组对象
    stus[0] = new Student("zhangsan",25,"LF"); //创建Student对象
    stus[1] = new Student("lisi",26,"JMS");
    stus[2] = new Student("wangwu",24,"SD");
    System.out.println(stus[0].name); //输出第1个学生的名字
    stus[1].age = 28; //修改第2个学生的年龄为28
    stus[2].sayHi(); //第3个学生跟大家问好
    for(int i=0;i<stus.length;i++){ //遍历所有学生
      System.out.println(stus[i].name); //输出每个学生的名字
      stus[i].sayHi(); //每个学生跟大家问好
    }

引用类型数组内存图
请添加图片描述

4.向上造型:

超类型的引用指向派生类的对象
能点出来什么,看引用的类型-------------这是java规定
向上造型的意义:--------实现代码复用
当多种角色能干的事是一样的,可以将那多种角色造型到超类数组中,统一访问

public class UploadDemo {
        public static void main(String[] args) {
            Aoo o1 = new Aoo();
            o1.a = 1;
            o1.show();
            //o1.b = 2;  //编译错误
            //o1.test(); //编译错误,超类不能访问派生类的

            Boo o2 = new Boo();
            o2.b = 1;
            o2.test();
            o2.a = 2;  //正确
            o2.show(); //正确,派生类可以访问超类的

            Aoo o3 = new Boo(); //向上造型
            o3.a = 1;
            o3.show();
            //o3.b = 2;  //编译错误
            //o3.test(); //编译错误,能点出来什么,看引用的类型
        }
    }

    class Aoo{
        int a;
        void show(){
        }
    }
    class Boo extends Aoo{
        int b;
        void test(){
        }
    }

5.方法的重写

重新写
发生在父子类中,方法名相同,参数列表相同
重写方法被调用时,看对象的类型-------这是java规定
重写遵循"两同两小一大"原则:
两同:
方法名相同
参数列表相同
两小:
派生类方法的返回值类型小于或等于超类方法的
void和基本类型时,必须相等
引用类型时,小于或等于
派生类方法抛出的异常小于或等于超类方法的
一大:
派生类方法的访问权限大于或等于超类方法的

重写与重载的区别:
重写(override):发生在父子类中,方法名相同,参数列表相同
重载(overload):发生在同一类中,方法名相同,参数列表不同

我是将军;我一直都在,。!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值