java基础5(面向对象)

java基础5(面向对象)

1. 面向对象:

object oriented programming 缩写 OOP面向对象的编程语言
  • 以分类的方式进行思考和解决问题。

  • 面向对象先对整体关系作出分类,然后根据不同的类深入细节的处理。

  • 面向对象的思想符合人类的认知习惯。

例:

Q:小明把苹果从桌子1拿到桌子2

A(pop):1.小明从桌子1处拿起苹果;

                    2.小明从桌子1处走到桌子2处;

                    3.小明把苹果放到桌子2处。

A(oop):小明(拿起,放下);桌子;苹果

注:面向对象编程与面向过程编程是相辅相成的,不具有完全替代性

2.类

(1)什么是类? 类定义了一种抽象的数据类型 类就是模板 确定对象将会拥有的特征(属性)和行为(方法)

(2)类的特点 类就是对象的类型 具有相同属性和方法的一组对象的集合

(3) 类的结构

  • 成员变量:事物属性的描述;

  • 方法:事物的行为;(可以做的事情)

  • 构造方法:用于创建对象;

  • 内部类: 即在类体中声明的类。

  • 块:一段没有名称的代码块

(4)类的定义(拿车来举例子---Car)

  • 发现类

    根据不同类型的车,抽象出“类”

    类的声明格式为:

    [访问权限修饰符] [修饰符] class Car{

    }

    访问修饰符有两种public,无(默认)

    修饰符:final,abstract

    关键字class用来定义一个类

  • 第二步:发现类的共有属性(成员变量)

    汽车类共有的特征:

    1. 颜色

    2. 名称

    3. 型号

    public class Car{

    //成员变量定义

    String name; //名称

    String color; // 颜色

    float price;//价格

    }

  • 第三步:发现类的方法

    汽车类共有的行为:

    1. 启动

    2. 行驶

    3. 刹车

    方法声明格式为:

    [访问权限修饰符] [修饰符]/ void start(){

    System.out.println("汽车启动");

    [return 返回值;]

    }

    public class Car{   
        String name;    
        String color;    
        float price;     
        public void start(){
            System.out.println("汽车启动");
        }
    }

3.对象

对象:对象是类的一个实例,是以类为模板在内存中创建的实际存在的实例。

对象的创建和使用

 class test{
     public static void main(String[] args) {
         Car c1 = new Car();
         c1.name="奔驰";
         c1.color="white";
         c1.price=300000;
         System.out.println("名字:"+ c1.name+"\n颜色:"+c1.color+"\n价格:"+c1.price);
     }
}

Car c1:使用Car类作为类型声明一个变量c1.
new Car():使用new + Car类构造方法创建对象.
= :将右边创建的对象地址 赋给 左边的c1变量
使用c1变量访问对象中的成员变量和成员方法

4.变量

成员变量:

成员变量是定义在类中,方法体之外的变量。

成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。

在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。

成员变量在创建对象的时候会从类中复制一份到对象中。

成员变量可以被类中方法、构造方法和特定类的语句块访问。

成员变量的作用范围为整个类体。

局部变量:

在方法、构造方法或者语句块中定义的变量被称为局部变量。

局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。

局部变量在使用前必须初始化赋值。

变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

5方法

  • 方法分类

    成员方法:成员方法是定义在类中。

    语法格式:

    修饰符 返回值类型 方法名 ( 参数列表) {

    方法体语句;

    [return 返回值]

    }

    构造方法:用来初始化对象的方法

    作用:在构造方法中为创建的对象初始化赋值

    要点:(1)构造器通过new关键字调用;

    (2)构造器虽然有返回值,但是不能定义返回值的类型(返回值的类型肯定是本类),不能再构造器里使

    用return返回某个值。

    (3)如果没有定义构造器,则编译器会自动定义一个无参的构造器(方法) 如果已定义 则编译器不会自

    动添加。

    (4)构造器的方法名必须和类名一致;

  • 方法重载

    ● 方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法

    ● 参数不同(可以有三方面的不同)

    (1) 数量不同

    (2) 类型不同

    (3) 顺序不同

    public class Car {
        String name;
        String color;
        float price;
    ​
        Car(){}
        public Car(String c_name){
            name=c_name;
        }
        public Car(String c_name,String c_color){
            name=c_name;
            color=c_color;
        }
    ​
        public static void main(String[] args) {
            Car c1=new Car();
            Car c2=new Car("宝马");
            System.out.println(c2.name);
            Car c3= new Car("法拉利","蓝色");
            System.out.println(c3.color+"的"+c3.name);
        }
    ​
    }

  • this关键字

    this关键字代表当前对象

    使用this关键字引用成员变量

    使用this关键字引用成员方法

public class Person {
    String name;
    int age;
    int height;
    public Person(){}
    public Person(String name, int age, int height){
        name=name;
        age=age;
        height=height;
    }
    public void introduce(){
        System.out.println("我是"+name+"今年"+age+"岁,我的身高是"+height+"cm");
    }
​
    public static void main(String[] args) {
        Person p=new Person("张三",18,170);
        p.introduce();
​
    }
}
  • public class Person {
        String name;
        int age;
        int height;
        public Person(){}
        public Person(String name, int age, int height){
            this.name=name;
            this.age=age;
            this.height=height;
        }
        public void introduce(){
            System.out.println("我是"+name+"今年"+age+"岁,我的身高是"+height+"cm");
        }
    ​
        public static void main(String[] args) {
            Person p=new Person("张三",18,170);
            p.introduce();
    ​
        }
    }
     

  • static关键字

    Static的特点

    (1)static是一个修饰符,用于修饰成员

    (2)static修饰的成员被所有的对象所共享

    (3)static优先于对象存在,因为static的成员随着类的加载就已经存在了

    (4)static修饰的成员多了一种调用方式,即可以直接被类名调用。类名.静态变量

    (5)static修饰的数据是共享数据,对象中的存储的是特有数据

  • 代码块

    在类中或者方法中,使用{}括起来的一段代码,就称它是代码块。

    代码块分为:局部代码块、初始化代码块、静态代码块三种

    用法:

1.static代码块也叫静态代码块,作用就是对类进行初始化,且 它随着类的加载而执行,且只执行一次。

2.普通代码块被创建一次就会被调用一次,如果只是使用类的静态成员时(包括静态属性等)普通代码块不会被执行。

当new一个对象时普通代码块会被执行,和类的加载没关系

3.创建一个对象时,在一个类中的调用顺序是:

 一.先调用静态代码块和静态属性初始化。(注意:静态代码和静态属性初始化调用的优先级一样,如果有多个静态代码块和多个静态属性初始化,则按照他们的定义顺序调用)

二. 调用普通代码块和普通代码块的初始化(注意同上)

三.调用构造器。(调用完上面再调用构造器)

4.构造器的最前面 其实隐藏了super和调用普通代码块,所以在执行构造器时先执行super和普通调用代码块和普通属性初始化

5.创建一个子类对象时(继承关系)他们的静态代码块静态属性初始化,普通代码块,普通代码块初始化,构造方法的调用顺序如下:

(1)父类的静态代码块和静态属性初始化,(优先级一样,按定义顺序执行)

(2)子类的静态代码块和属性初始化(同上)
(3)父类的普通代码块和普通属性初始化。

(4)父类的构造方法;

(5)子类的普通代码块和普通属性初始化。

(6)子类的构造方法

6.静态代码块之只能直接调用静态成员,普通代码块能调用所有成员。

总结:创建对象时(调用static代码块和static属性初始化)后执行普通代码块和普通属性(无先后看调用)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值