类和对象

一、面向对象的基本概念

面向过程:是一种以过程为中心的编程思想。“面向过程”就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们关心的是某一个事件。而不是汽车本身。我们分别对启动和到站编写程序。

面向对象:是一种以事物为中心的编程思想。我们关心的是由汽车抽象成的对象,这个对象有自己的属性,像轮胎,颜色等;有自己的方法,像启动,行驶等.方法也就是汽车的行为.而不是汽车的每个事件。

面向对象的三大特性:

  • 封装
  • 继承
  • 多态

对象:是用来描述客观事物的一个实体。例如奥迪车和宝马车,虽然这两个跑车都是对象,但具有不同的特征,比如品牌不同、价格不同、性能不同

:类是具有形同属性和方法的集合。譬如跑车的特征是都有轮子、门等,这就是跑车这个对象的属性。还有一些共同的行为,比如都能发动、加速等,这就是方法。

面向对象设计的过程就是抽象的过程,一般分3步来完成:

1)发现类,类定义了对象将会拥有的特征(属性)和行为(方法)。

2)发现类的属性,对象所拥有的静态特征在类中表示时称为类的属性

3)发现类的方法,对象执行的操作称为类的方法。

public class Person{    // 定义人类
    // 定义类的属性(特征)
    public String name;    // 姓名
    public String gender;    // 性别
    public int age;    // 年龄
    // 定义类的方法(行为)
    public void work(){
        System.out.println(this.name+"的工作理念:干活挣钱有饭吃");
    }
}

二、掌握类的定义和对象的创建

2.1 类的定义

定义类的语法格式:

[访问修饰符] class 类名 {
    // 一组属性
    // 一组行为
}

定义狗类: 

public class Dog {

	// 一组属性
	String color; // 颜色
	String strain; // 品种
	String name; // 名称
	int age; // 年龄
	double weight; // 体重
	
	// 一组行为
	public void eat() {
		System.out.println("狗爱吃骨头!");
	}
	
	public void shout() {
		System.out.println("狗吠声!....");
	}
	
}

2.2 对象的使用

创建对象的语法格式:

类名 对象名 = new 类名(); 
对象名.属性名 = xxx; // 属性的赋值
对象名.方法名(); // 执行对应的方法

创建狗对象: 

public class Test {

	public static void main(String[] args) {
		// 创建对象
		Student dog1= new Student();
		// 属性赋值
		dog1.name = "二哈";
		dog1.age = 8;
		// 方法调用
		dog1.eat();
		System.out.println("------------------");
		Student dog2= new Student();
		// 赋值
		dog2.name = "阿毛";
		dog2.age = 7;
		// 方法调用
		dog2.shout();
	}

}

 【类和对象的关系:】

  • 类是一个抽象的概念。

  • 类是从一组具有相似特征的对象中发现抽取而出的。

  • 对象是类的一个个体/实例

三、掌握方法及方法重载

方法:能够实现某种功能的一个东西。变量可以存储我们单一的数据,而方法则可以存储我们的功能代码段。

方法的基本语法:

// 方法声明
[访问修饰符] 返回值类型 方法名([参数列表]){
    // 方法体
    [return 返回值;]
}

方法的分类:

1)无参无返方法

2)有参有返方法

3)有参无返方法 

4)无参有返方法

public class Person{
    public String name;    // 姓名
    public int age;    // 年龄
    // 无参无返
    public void work(){
    System.out.println(this.name+"的工作理念:干活挣钱有饭吃");
}
    // 有参无返    
    public void work(String contect){
    System.out.println(this.name+"的工作理念:"+contect);
}
    // 有参有返
}
    // 无参有返


}

// 创建work()方法时定义的参数叫形式参数,简称形参
// 调用方法时传入的参数叫做实际参数,简称实参

 

方法重载:方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型和参数个数。

方法重载的特点:

  • 在同一个类中
  • 方法名相同
  • 参数个数和类型不同
  • 方法的返回值不能作为判断方法之间是否构成重载的依据

四、掌握构造方法及重载

构造方法:创建、构建,类的对象的构建和创建的方法。 当对象创建时都会被执行!

构造方法最重要的意义就是Java给我们提供了能够在对象的创建(生命周期)过程中添加代码的能力。

一般构造方法的应用都是用于一些基本信息的初始化(初始化方法)。

  • 每一个类默认情况下JVM都会分配一个无参构造。

  • 构造方法没有返回值类型,方法名和类名完全相同。

  • 构造方法分为带参方法和无参方法

  • 只要你自己创建任意一个构造方法,那么JVM就不再给你分配无参构造了。所以建议无论自己是否编写构造方法,都去手动编写一个默认的无参构造。

方法重载:发生在一个类中的,方法名相同,参数列表不同(个数、顺序、类型)的情况。与访问修饰符和返回值类型无关。

方法重载的意义在于我们要定义相同功能的方法,不需要再花费大量时间去定义n种方法名,而且未来在调用时体验更佳。

五、理解封装的原理

5.1 封装的作用

封装:类和对象章节 当时学到的是半成品的封装。学会发现类,发现类的属性、类的行为。

另外一半的封装概念:将一些不安全的信息进行封装(保护),然后将可以直接被我们使用的部分开放出来(接口)。(提升安全性和可用性,有面向接口编程的思想)

使用步骤: 未来这些类组件都应该采用封装来进行信息保护

  • 属性私有化(private)

  • 提供公共的getter(getXX())和setter(setXX())方法

  • 根据需求在setter和getter方法中添加逻辑判断

5.2 一般JavaBean的规范

JavaBean:其实指的就是我们那些对象类。

  • 属性私有化

  • 提供公共的getter和setter方法

  • 提供无参构造

  • 实现序列化接口(序列化其实就是我们的对象在流之间进行转换的一种概念)

5.3 封装的优势

我们未来开发的系统应该非常接近于 高内聚、松耦合(低耦合)

1. 便于使用者正确使用系统,防止错误修改属性。简单说就是安全 前面属性的例子 自动提款机(钱放在那里,用户自己存钱取钱 自己改存折上的数据不行 取款机要点钱)

2. 有助于系统之间的松耦合(低耦合),提高系统独立性。当某一个系统的实现发生变化时,只要它的接口不变,就不会影响其他的系统,例如:我修改了属性名,如果没有封装,我需要修改程序中不同类n处使用到这属性名的地方,而用了封装,我只需要修改好当前这个类里面向外部提供的方法(接口API)就可以了,因为外部只是在使用我这个方法名而已。

3. 提高软件的可重用性。每个系统都是一个相对独立的整体,可以再多种环境中得到重用。如干电池在相机、手电筒、剃须刀都能使用。

4. 降低了构建大型系统的风险。即使整个系统不成功,个别的独立子系统有可能依然有价值,比如相机损坏了,但电池依然有用,可以安装在手电筒中。

 

六、掌握包的使用

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

包的作用

  • 1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

  • 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

  • 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

包语句的语法格式为:

package pkg1[.pkg2[.pkg3…]];

 

七、访问修饰符的使用

访问修饰符:在类的语法和方法的语法上,访问修饰符不仅可以修饰属性、也可以修饰方法、还可以修饰类。

  • private
  • [package/default] 当你不写访问修饰符时 代表的就是包级别的访问
  • protected
  • public
 

同一类中

同一包中

子类中

其他地方

private

                 

默认修饰符

                            

protected

                                        

public

                                                      

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值