面向过程
面向过程和面向对象,都是一种设计思想
面向过程:侧重于实现的具体过程,主要设计到方法(函数)
面向对象:面向对象则是将问题转换成谁做什么事情(对象干什么)
怎么将大象放进冰箱?
面向过程:
- 开冰箱门
- 把大象塞进去
- 关冰箱门
面向对象:
存在哪些对象(事物):
冰箱、大象、人
冰箱{
冰箱门打开(){}
冰箱门关闭(){}
}
人{
打开冰箱门(){
冰箱.冰箱门打开()
}
塞大象(){}
关闭冰箱门(){
冰箱.冰箱门关闭()
}
}
大象{
喊救命(){}
}
具体过程:
人.打开冰箱门()
人.塞大象()
人.关闭冰箱门()
java中面向对象体现
类(class) : 类是对一类事物的一个抽象定义
对象(Object) : 对象是一类事物的一个具体表现
手机:小米手机、华为手机、OPPO手机…
电脑:ThinkPad、联想、华硕、戴尔…
人:亚洲人、非洲人、美洲人…
1、类的定义
public class 类名{
// 属性 (变量)
// 行为 (方法)
}
类中的属性和行为具体要看怎么设计,并不是必须要包含。
2、对象创建
语法:
类名 变量名 = new 类名();
Person p = new Person() ;
3、属性和方法的使用
访问&修改属性
对象.xxx;
对象.xxx = yyy;
方法的调用
对象.方法();
4.内存分析
5.方法
方法的重载
方法的重载: 方法的参数列表不一样(类型或个数) ,方法名一样
public void sum (int x, int y) {
System.out.println(x+y);
}
public void sum(float x, float y) {
System,ouu.println(x+y);
}
public void sum(double x,double y) {
System.out.println(x+y);
}
传值&引用
传值:方法的参数为基本数据类型,方法中所进行的更改不会影响到原来的实参。
传引用:方法的参数为引用类型,若在方法中更改了引用对应的对象,那么在其他地方再去访问对象时,里面的数据将会有变化。
public calss Test {
int x;
public static void main(String[] args) {
Test5 t = new Test5();
int a = 10;
t.f1(a);
System.out.println("main:" + a);
/**********************************华丽的分割线/
t.x = 100;
System.out.println(t.x);
t.f2(t);
System.out.println("main:" + t.x);
}
// 传引用
public void f2(Test5 t) {
t.x = 200;
System.out.println("f2:" + t.x);
}
// 传值
public void f1(int a) {
a++;
System.out.println("f1:" + a);
}
}
6.构造方法
// 构造方法语法:
public 类名([参数列表]) { // 类名前是没有返回值的
}
- 构造方法可以用来创建对象
- 带参构造方法可以在创建对象时,通过传入参数将对象的属性进行初始化
- 一个类中若没有现实的定义任何构造方法,那么系统将会自动添加一个无参构造方法; (默认添加)
- 若手动定义了一个带参构造方法,但是没有定义无参构造方法,那么类的无参构造方法将会被带参构造方法所覆盖。
举个栗子:
Person 类:
public class Person {
String name;
int age;
String sex;
//无参构造方法
public Person(){
}
//带参构造方法
public Person(String pName,int pAge,String pSex){
name = pName;
age = pAge;
sex = pSex;
}
}
再创建一个测试类:
public class Test06 {
public static void main(String[] args) {
Person p = new Person("jack",20,"男");
System.out.println(p.name);
Person p2 = new Person();
}
}