简介:
面对过程:针对某一个问题单独提出解决方案以及代码的开发;
面对对象:以一种主键化的形式进行代码的设计,最大的好处是可重用。
封装性:保护内部的定义结构安全性;
继承性:在已有的程序结构上继续扩充新的功能;
多态性:指的是在某一个概念范围内的满足。
开发步骤:
- OOA(面对对象分析)
- OOD(面对队形设计)
- OOP(面对对象编程)
类与对象:
类是共性的集合,对象是某一个性的产物;
类是对象操作的模板,但类不能直接使用,必须通过实例对象来使用;
定义类:
class 类名称{}
类中组成:
- Field(属性,成员,变量),一堆变量的集合;
- Method(方法,行为),由对象调用 --不在主类中调用可不加static
对象的定义格式:
- 声明并实例化对象:类名称 对象名称=new 类名称()
- 分布完成:
声明对象:类名称 对象名称=null
实例化对象:对象名称 =new 类名称()
引用数据类型与基本数据类型最大的不同在于需要内存的开辟及使用,new的功能是开辟内存空间。
即使用引用数据类型就需使用关键字new来开辟空间。
总结:
- 类描述的是公共特征,类需通过实例才可使用
- 声明对象指未开辟堆内存的对象,如果直接使用此对象会出现“NullPointerException”异常,对象可使用关键字new来进行堆内存空间的开辟,有了堆内存引用的对象,才叫实例化对象
- 堆内存保存的是所有属性的内容,而栈内存保存的是堆内存的地址数值
- 垃圾空间指的是不被任何栈内存指向的堆内存空间,会被GC不定期回收。
封装性:
- 保证内部定义被外部不可见
- 类中定义的属性要用private声明,
- 如属性要被外部使用,那就按要求定义相应的setter,getter方法。
- setter方法主要是设置内容:public void setTitle(String t);
- getter方法主要是取得属性内容:public String getTitle()。
package com.company;
public class Main {
public static void main(String[] args) {
Book book =new Book();
book.setPrice(20.0);
book.setTitle("词典");
book.getInfo();
}
}
class Book{
private Double price;
private String title;
public void setPrice(Double p){
price=p;
}
public void setTitle(String t){
title=t;
}
public Double getPrice(){
return price;
}
public String getTitle(){
return title;
}
public void getInfo(){
System.out.println(title+"的价格是"+price);
}
}
构造方法
定义原则:方法名称与类名称相同,没有返回值声明。
class Book {
public Book(){}; //无参,无返回值的构造方法
}
(1)类名称 (2)对象名称=(3)new (4)类名称()
- 类名称:规定对象类型,对象能使用哪些属性和哪些方法都是由类定义的;
- 对象名称:如果想要使用对象,需要一个名字 ,一个唯一的标记;
- new:开辟新的堆内存空间,如果没有此语句,对象无法实例化;
- 类名称():调用一个和类名称一样的方法就是构造方法。
构造方法与普通方法的区别
- 构造方法在实例化新对象(new)的时候只调用一次;
- 普通方法是在实例化对象产生之后可以调用多次。
构造方法的作用:
在类对象实例化的时候设置属性的初始化内容(构造方法是为类初始化准备的)
特点:
如类中已经明确定义一个构造方法,将不会自动生成默认的构造方法;
类中至少保留有一个构造方法;
构造方法属于方法行列,也可进行重载,但只需考虑其参数的类型及个数。
class Book {
public Book(){
System.out.println("无参的构造方法!");
};
public Book(String t){
System.out.println("有一个参数的构造方法!");
};
public Book(String t,Double n){
System.out.println("有两个参数的构造方法!");
};
}
匿名空间
定义:没有栈指向的对象称为匿名对象。
由于匿名对象没有其他对象对其引用,所以只能使用一次
public class Main {
public static void main(String[] args) {
new Book().getInfo();
}
}