Java OOP第一至四章节
第一章 对象和封装
1.1理解面向对象
1.1.1为什么要使用面向对象
面向对象就是采用"现实模拟"的方法设计和开发程序,面向对象技术利用"面向对象的思想"去描述"面向对象的世界",是客户和软件设计开发人员之间、软件设计开发人员内部交流更加顺畅,同时有代码重用性高,可靠性高等优点,大大提高了软件尤其是大型软件的设计和开发效率。
1.1.2面向过程和面向对象的区别
面向过程:面向过程的核心是函数,已功能为中心,实现函数级别的代码重用。也就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程中没有继续和多态的特征。
面向对象:面向对象的核心是封装了属性和方法(行为)的类,以数据为中心,实现类级别代码的重用。也就是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
1.1.3面向对象设计的过程
面向对象设计的过程就是抽象的过程,分为以下三步:
第一步:发现类
第二步:发现类的属性
第三步:发现类的方法
1.2使用面向对象
1.2.1创建类和对象
//创建狗狗类
public class Dog {
public String name;//姓名
public int health;//健康值
public int love;//亲密度
public String strain;//品种
//输出信息
public void print() {
System.out.println("宠物的自白:\n我的名字叫"+this.name
+"健康值是:"+this.health+",和主人的亲密度是"+this.love
+",我是一只"+this.strain);
}
}
//创建测试类
public class Test {
public static void main(String[] args) {
//创建狗狗对象赋值
Dog dog =new Dog();
dog.name="酷酷";
dog.strain="拉布拉多犬";
dog.love=100;
dog.health=100;
dog.print();//输出狗狗对象
}
}
(1)Java中创建对象、调用属性及方法的语法和C#中是相同的。
通过构造方法来创建对象,如:
Dog dog = new Dog();创建狗狗对象
通过对象名.属性名的方式调用属性,如:
dog.name="酷酷";//给属性赋值
通过对象名.方法名的方式调用方法,如:
dog.print();//调用输出方法
(2)类和对象是面向对象的两个核心概念,类是对某一类事物的描述是抽象的,对象是实际存在的,具体的事物个体。
1.2.2构造方法及其重载
(1)构造方法
构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。构造方法有无参的构造方法和有参的构造方法。一个类可以定义多个不同的构造方法。
构造方法的特点:
1、方法名和类名相同
2、没有返回值
3、在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化。
(2)重载
方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
方法重载的判断依据:
1、必须在同一个类里
2、方法名相同
3、参数列表(方法参数的个数或参数类型)不同
4、在使用this调用自身的其他构造方法时,只能作为第一条语句
注:在使用this调用自身的其他构造方法时,只能作为第一条语句
(3)构造方法和重载例子
public class Penguin {
String name;
int health;
int love;
String sex;
/**
*无参构造方法
*/
public Penguin() {
name="楠楠";
health=100;
love=20;
sex="Q妹";
System.out.println("执行构造方法");
}
/**
* 有参数的构造方法
*/
public PenguinSL8(String name,int health,int love,String sex) {
this.name=name;
this.health=health;
this.love=love;
this.sex=sex;
}
public void print() {
System.out.println("宠物的自白:\n我的名字叫"+this.name
+"健康值是:"+this.health+",和主人的亲密度是"+this.love
+",性别"+this.sex);
}
/**
* 测试构造方法
*/
public static void main(String[] args) {
Penguin pgn =null;
//测试无参构造方法
pgn =new Penguin();
pgn.print();
//测试有参构造方法
pgn =new PenguinSL8("美美",80,20,"Q仔");
pgn.print();
}
1.2.3static修饰符
(1)static的定义
static可以用来修饰属性、方法和代码块。把static修饰的属性和方法成为类属性(类变量)和类方法,不用static修饰的属性和方法属于单个对象,通常称为实例属性(实例变量)和实例方法;例如main()方法。
语法:
访问修饰符 static 数据返回类型 方法名(){
}
例如:
public class StaticTest {
static int i;
static int m = 30;
int j;
int k=25;
static {
i=10;
System.out.println("i的初始值为"+i);
}
public StaticTest() {
j=20;
System.out.println("j的初始值为"+j);
}
public static void getNum() {
System.out.println("得到i的值为"+i);
}
public static void main(String[] args) {
StaticTest st =new StaticTest();
System.out.println("i的值为:"+StaticTest.i);
st.getNum();
System.out.println("m的值为:"+st.m);
System.out.println("k的值为:"+st.k);
}
<