概念:
共同特性的方法和数学变成类
描述复杂的事物,为了从宏观上把握,需要用面向对象的思路分析整个系统,但是,具体到微观操作,仍需要要面向过程的思路处理
面向对象编程:以类的方式组织代码,以对象组织(封装)数据
三大特性:
-
封装
-
继承
-
多态
从认识论角度考虑,先有对象后有类,对象是具体事物,类是抽象的,对对象的抽象
从代码运行角度考虑,先有类后有对象,类是对象的模板
//学生类 public class Student { //属性 String name; int age; //方法 public void game(String[] args) { System.out.println("学生在玩游戏"); } }
//只有一个main方法 public class APP { public static void main(String[] args) { //类是抽象的,需要使用new实例化 //xh,xm两个对象都是Student的实例 Student xm=new Student(); Student xh=new Student(); xm.name="小明"; xh.name="小红"; xm.age=10; xh.age=9; System.out.println(xh.age+xm.age+xm.name+xh.name); } }
使用new关键字创建的时候,除了发配内存空间外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用
构造器
package Husky.JAVA.opp.Demo02; public class Person { //一个类什么都不写,也会默认有一个构造方法 String name="Husky"; int age; //实例化初始值 //使用new关键字,必须要有构造器 public Person(){ this. name="哈士琪"; } //有参构造:一旦有了有参构造,无参构造必须显示定义 public Person(String name){ this.name=name; } //alt+insert:生成构造器 /* 1.和类名相同 2.没有返回值 3.new的本质是调用构造方法 4.初始化对象的值 5.定义有参构造后,如果想使用无参构造,必须显示的定义一个无参构造 6.this.代表当前类的 */ }
package Husky.JAVA.opp.Demo02; public class APP { public static void main(String[] args) { //使用new实例化一个对象 Person person=new Person(); System.out.println(person.name); person= new Person("husky"); System.out.println(person.name); } }