Java面向对象01
java的核心思想就是OOP
初识面向对象
面向过程&面向对象
面向过程思想
-
步骤清晰简单,第一步做什么,第二步做什么.…...
-
面对过程适合处理一些较为简单的问题
面向对象思想:
-
物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
-
面向对象适合处理复杂的问题,适合处理需要多人协作的问题!
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理
什么是面向对象?
-
面向对象编程(Object-Oriented Programming, OOP)
-
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
-
抽象
-
三大特性:
-
封装
-
继承
-
多态
-
-
从认识论角度考虑是先有对象后有类。对象,是具体的事物.类,是抽象的,是对对象的抽象。
-
从代码运行角度考虑是先有类后有对象。类是对象的模板。
方法回顾和加深
-
方法的定义
◆修饰符 ◆返回类型 ◆break( 跳出switch,结束循环)和return的区别 ◆方法名:注意规范就OK (见名知意) ◆参数列表:(参数类型, 参数名)(...可变长参数,直接通过...来定义,...要放到形参最后) ◆异常抛出
-
方法的调用:递归 ◆静态方法 ◆非静态方法 ◆形参和实参 ◆值传递和引用传递
值传递就是真实值在传递的时候传递的是他的副本,而不是其本身,所以在方法内改变其值并不会真正改变
◆this关键字(继承和多态时说)
//非静态方法
public void say(){
System.out.println("学生说话了");
}
-------------------------------------------------
public static void main(String[] args) {
//实例化这个类 new
//对象类型 对象名=对象值
Student student=new Student();
student.say();
//new Student().say()
//静态方法
public static void say(){
System.out.println("学生说话了");
}
-------------------------------------------------
public static void main(String[] args) {
Student.say();//类名.方法名
}
由于static修饰表示属于类,因此如果想访问类的方法或者变量,则可以直接通过类名.方法名()/类名.变量名进行访问
所谓的动态和静态的区别:对于一个类来说,如果没有被static所修饰的成员变量或者成员方法,那么每实例一个新的对象(new),这些非static修饰的都属于对象。
public class Demo03 {
public static void main(String[] args) {
//Demo03.add(1,2);alt+enter
//实际参数和形式参数的类型要对应!
int add = Demo03.add(1, 2);
System.out.println(add);
}
?
public static int add(int a,int b){
return a+b;
}
}
//值传递
public class Demo04 {
public static void main(String[] args) {
int a=1;
System.out.println(a);//1
Demo04.change(a);
System.out.println(a);//1
?
}
//返回值为空
public static void change(int a){
a=10;
}
}
值传递只是传递值,那个值的物理地址没被传过去,形参改变的是另一个物理地址的值
对象的创建分析
类和对象的关系
1.类是一种抽象的数据类型,它是对某-类事物整体描述定义,但是并不能代表某-个具体的事物. 动物、植物、手机、电脑.... ◆Person类、Pet类、 Car类等, 这些类都是用来描述/定义某一类具体的事物应该具备的特 点和行为 2.对象是抽象概念的具体实例 ◆张三就是人的一个具体实例,张三家里的旺财就是狗的一个具体实例。 ◆能够体现出特点,展现出功能的是具体的实例,而不是一个抽象的概念.
创建对象
◆使用new关键字创建对象 ◆使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用。
//学生类
public class Student {
//属性:字段
String name;
int age;
?
//方法
public void study(){
System.out.println(this.name+"在学习");
}
}
------------------------------------------------
//一个项目应该只存一个main方法
public class Application {
?
public static void main(String[] args) {
?
//类:抽象的,需要实例化
//类实例化后会返回一个自己的对象!
//student对象就是一个Student类的具体实例;
Student xiaoming = new Student();
Student xiaohong= new Student();
?
xiaoming.name="小明";
xiaoming.age=3;
?
System.out.println(xiaoming.name);
System.out.println(xiaoming.age);
}
}
构造器
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下俩个特点: 1.必须和类的名字相同
2.必须没有返回类型,也不能写void 构造器必须要掌握(自动生成构造器快捷键:alt+insert)
public class Person {
//一个类即使什么都不写,他也会存在一个方法
//显示的定义构造器
?
String name;
?
//实例化初始值
//1.使用new关键字,本质是在调用构造器
//2.用来初始化值
public Person(){
// this.name="仙女";
}
?
//有参构造:一旦定义了有参构造,无参就必须显示定义(重载)
public Person(String name){
this.name=name;
}
}
--------------------------------------------------
public class Application {
?
public static void main(String[] args) {
//new实例化了一个对象
Person person = new Person("仙女");
System.out.println(person.name);
}
}
构造器:
-
和类名相同
-
没有返回值
作用:
1.new 本质在调用构造方法 2.初始化对象的值
注意点:
-
定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造.
简单小结类与对象
-
类与对象 类是一个模板:抽象,对象是一个具体的实例
-
方法 定义、调用!
-
对象的引用 引用类型:基本类型(8) 对象是通过引用来操作的:栈--->堆
Object obj=new Object();
//obj:对象的引用
//new Object():对象
//Object:类 -
属性:字段Field 成员变量 默认初始化: 数字:0,0.0
char : u000
booLean:falsel
引用: null 修饰符 属性类型 属性名=属性值!
-
对象的创建和使用 -必须使用new关键字创造对象,构造器
Person xiannv = new Person();
-对象的属性xiannv.name -对象的方法xiannv.sleep()
-
类: 静态的属性 属性
动态的行为 方法