Java基础 面向对象(上)

一、类与对象

1.面向对象学习的三条主线

  1. Java类及类的成员;
  2. 三大特征:封装、继承、多态;
  3. 其他关键字:this、super、static、final、abstract、interface、package、import

“大处着眼,小处着手”

2.面向对象和面向过程的比较

  • 面向过程:强调功能行为,以函数为最小单位,考虑怎么做;
  • 面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

3.完成一个项目的思路

现实世界中的实体->概念世界中的类->形成计算机世界中类的定义->类实例化为计算机世界中的对象。

4.面向对象的两个重要概念

  • 类:对一类事物的描述,抽象的、概念上的定义;
  • 对象:实际存在的该类事物的每个个体,也称为实例(instance)。

面向对象程序设计的重点:类的设计;设计类,就是设计类的成员。

对象 是由 类 new出来的,派生出来的。

5.面向对象思想落地实现的规则

  1. 创建类,设计类的成员;
  2. 创建类的对象;
  3. 通过“对象.属性”或“对象.方法”调用对象的结构。

几个概念的使用说明

  • 属性 = 成员变量 = field = 域、字段
  • 方法 = 成员方法 = 函数 = method
  • 创建类的对象 = 类的实例化 = 实例化类

6.对象的创建和对象的内存解析

Person p1 = new Person();
Person p2 = new Person();
Person p3 = p1; //没有创建一个新的对象,共用一个堆空间中的对象实体。

如果创建了一个类的多个对象,则每个对象都独立地拥有属于一套类的属性。(非static的)意味着,如果修改一个对象的属性a,则不影响另外一个对象的属性a。

 

 7.匿名对象

创建的一个对象,没有显式的赋给一个变量名,即为匿名对象。

特点:匿名对象只能调用一次。

举例:

new Phone().sendEmail();
new Phone().playGame();

new Phone().price = 9999;
new Phone().showPrice();

应用场景:

package com.geng.test;

public class InstanceTest {
    public static void main(String[] args) {
        Phone p = new Phone();
        System.out.println(p);

        p.sendEmail();
        p.playGame();

        // 匿名对象
        new Phone().sendEmail();
        new Phone().playGame();

        new Phone().price = 1999;
        new Phone().showPrice();

        PhoneMall mall = new PhoneMall();
        mall.show(p);
        mall.show(new Phone());

    }
}

class PhoneMall{
    public void show(Phone phone){
        phone.sendEmail();
        phone.playGame();
    }
}

class Phone{
    double price;

    public void sendEmail(){
        System.out.println("发送邮件");
    }

    public void playGame(){
        System.out.println("玩游戏");
    }

    public void showPrice(){
        System.out.println(price);
    }
}

8.理解“万事万物皆对象”

在Java语言范畴中,将功能、结构封装到中,通过类的实例化调用具体的功能结构

  • Scanner、String
  • 文件:File
  • 网络资源:URL

涉及到Java语言与前端html、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类、对象。

JVM内存结构

编译完源程序之后,生成一个或多个字节码文件

使用JVM中 类的加载器和解释器 对生成的字节码文件进行解释运行。

 

类的结构之一:属性

类的结构之一:方法

方法的重载

1.定义

“两同一不同”
同一个类、同一个方法名
参数列表不同:参数个数不同,参数类型不同

2.举例

Arrays类中的sort()方法

binarySearch(): 

  PrintStream中的println()

 

3.如何判断

按照定义:两同一不同

跟方法的权限修饰符返回值类型形参变量名方法体都没关系

4.如何确定类中某一个方法的调用

方法名-->参数列表

可变个数形参Varargs

1.使用说明

  1. 格式:数据类型 ... 变量名(String ... strs);
  2. 当调用可变个数形参的方法时,传入的参数可以是:0个、1个、2个...;
  3. 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载;
  4. 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不能共存;
  5. 可变个数形参在方法的形参中,必须声明在末尾;
  6. 可变个数形参在方法的形参中,最多只能声明一个可变形参。

2.举例说明

public class MethodArgsTest {
    public static void main(String[] args) {
        MethodArgsTest mat = new MethodArgsTest();
        mat.show(5);
        mat.show("我是一个参数");
        mat.show("参数1", "参数2", "参数3");
    }

    public void show(int i){
        System.out.println("show-int i");
    }

    public void show(String s){
        System.out.println("show-String s");
    }

    public void show(String ... strs){
        System.out.println("show-string...strs");
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值